3

サーバーにファイルをアップロードしようとしています。また、このデータに関する入力フォームからのコメントもあります。

ここで私は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ページに送信されていることがわかります。しかし、アップロードフォルダを確認すると。アップロードしたファイルが見つかります。しかし、サイズはゼロです。つまり、空のファイルをアップロードします!!!

誰かが私がこの問題を解決するのを手伝ってくれる?どうもありがとうございます!!

4

2 に答える 2

1

html5を使用してajaxリクエストでファイルをアップロードできます

あなたが探しているのは、データとフォームデータも送信することです(これは私の知る限り、jsonでは不可能です)

この記事でデータの送信を探してください:

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

そのページには、達成しようとしていることを示す良い例があります:)

于 2012-11-17T15:46:26.193 に答える
0

jquery.form.jsを使用してファイルとデータをアップロード/投稿できます。このファイルはすべてのフィールドデータをシリアル化してサーバーに送信します。uはphpを使用して投稿データを受信し、json形式タイプに変換できます。http: //www.malsup.com/jquery/形/

于 2012-11-20T12:12:42.830 に答える