2016-08-09 27 views
-1

私はファイルの添付ファイルを処理する "仮想フォーム"が必要なフォームを持っています。私はファイル入力とファイルを送信するボタンがあります。PHPを使用したAjax POST形式

問題が裏打ちされた私のPHPだけPOSTを取得していることであり、その構造を持つ:ドットがファイルからバイナリデータを表す

"file"; filename="xxx.jpg" 
Content-type: image/jpeg 

. 
. 
. 

私が読んだことは、$_FILES$_POSTの変数になるはずですが、私はそれらを取得しません。ここで

は、HTMLとJavascriptでの関連するコードラインです:

<input type="file" id="file-to-append" name="file-attachment"> 
<input type="button" onClick="append_file()" value="Add file"> 

function append_file() { 
var formData = new FormData(); 


console.log(jQuery('#file-to-append')); 
    formData.append('file', jQuery(":file")[0].files[0]); 

    jQuery.ajax({ 
     url : 'file_upload.php', 
     type : 'POST', 
     data : formData, 
     processData: false, 
     success : function(data) { 
      console.log(data); 
      alert("Added"); 
     } 
    }); 
} 

は、誰かが見つけるか、どこに問題がある知っているだろうか?

フォームで
+0

Iあなたの 'form'タグに' enctype'属性がありません。 –

+0

あなたの完全なフォームを投稿してください.. – jaysingkar

+0

この場合、enctypeは重要ではありません – user3284463

答えて

-1

使用権encrypte

<form id="data" enctype="multipart/form-data" method="post" > 
<input type="submit" value="Add file"> 
</form> 

使用AJAXあなたのAjax呼び出しに問題がないので、データが正常に通過している

$("form#data").submit(function() 
{var formData = new FormData($(this)[0]); 
$.ajax({ 

        url: "filename.php", 
        type: 'POST', 
        data: formData, 
        async: false, 
        success: function (data) 
        { 
          var jsonData = $.parseJSON(data); 
          var errFlag =jsonData.errorFlag; 
          var errMsg =jsonData.errorMessage; 

          if(errFlag == 1) 
          { 
           //successmessage; 
          } 
          else 
          { 
           //errormessage; 
          } 
        }, 
        cache: false, 
        contentType: false, 
        processData: false 

       }); 
       return false; 


}); 
0

を提出します。

スーパーグローバル$_FILESを使用してPHPでファイルオブジェクトを取得します。

$file = $_FILES['file']; 
echo $file['name']; 
echo $file['tmp_name']; 
. 
. 
. 

あなたは可能性$_FILES配列を見てみること:あなたのケースでは

、あなたはそれが好きで使用することになり

echo "<pre>"; 
print_r($_FILES); 
echo "</pre>"; 
0

物事は見知らぬ人と見知らぬ人を得ています。私はそれを動作させましたが、contentType: 'multipart/form-data'を設定することで、IE 11のみでした。Chromeでは、その設定ではまったく動作しません。

私はcontentType:falseで試してみましたが、どちらのプラットフォームでも動作しませんが、それは正しいこと(TM)です:/。

私は外部フォームにenctype-settingを追加しましたが、私は(フォーム全体)を提出するのではなく、(自分自身を扱う)メインフォームの「内部」のものを追加するだけなので、どうやらそれは助けにもなりませんでした。

これが問題になることはありませんが、私は長い時間前に(2桁の番号)ので、ファイルのアップロードを使用していたものの、何らかの理由で、私は、このAjaxの実装で立ち往生しています...

ハンク

関連する問題