用json上传文件和一些数据

时间:2012-11-17 13:47:39

标签: php json upload

我正在尝试将文件上传到服务器。还有一些关于这些数据的输入表格的评论。

这里我用js发送了数据:

var postContainer = new Array();
        postContainer.push(
        {
            file : file,
            f_name : file.name,
            input1 : it1Value 
        });

        var newJ = JSON.stringify(postContainer);            
        xhr.setRequestHeader("X-File-Name", file.name);
        var resText;
        xhr.setRequestHeader("Content-type","application/json");
        xhr.onreadystatechange = function(){
            if(xhr.readyState != 4){
                return;
            }
            console.log(xhr.responseText);
        }
        xhr.send(newJ);  

然后我读取数据并将文件发送到上传文件夹:

    $data = file_get_contents("php://input");
    $data = json_decode($data);
    var_dump($data);
    $this->fileName = $data[0]->{"f_name"};
    $this->genre = $data[0]->{"input1"};
    $this->file = $data[0]->{"file"};
            file_put_contents(
    $this->path . $this->fileName,
    $this->file
    );

var_damp($ data)控制台中的输出是:

array
0 => 
object(stdClass)[2]
  public 'file' => 
    object(stdClass)[3]
      public 'webkitRelativePath' => string '' (length=0)
      public 'lastModifiedDate' => string '2012-06-26T06:25:34.000Z' (length=24)
      public 'name' => string 'Belgium.png' (length=11)
      public 'type' => string 'image/png' (length=9)
      public 'size' => int 28228
  public 'f_name' => string 'Belgium.png' (length=11)
  public 'input1' => string 'Genre' (length=5)

您可以看到数据被发送到php页面。但是当我检查我的上传文件夹时。我可以找到我上传的文件。但是大小是零。这意味着我上传了一个空文件!!!

有人可以帮我解决这个问题吗? 非常感谢!!

2 个答案:

答案 0 :(得分:0)

可以使用html5

上传带有ajax请求的文件

您正在寻找的是发送数据&表格数据(据我所知,这在json中是不可能的)

在本文中查找发送数据:

http://www.html5rocks.com/en/tutorials/file/xhr2/

在该页面上有一个很好的例子,说明了你要完成的任务:)

答案 1 :(得分:0)

您可以使用jquery.form.js上传/发布文件和数据 此文件序列化所有字段数据并发送到服务器您可以使用php接收发布数据并转换为json格式类型: http://www.malsup.com/jquery/form/