コードの多くを見ることなく、あなたの問題が何であるかを知るのは少し難しいです。
2番目の方法は、form_data.append
を使用して作業する必要があります。 (?私はあなたが両方の命名てきたという事実を推測している「file_upは」ただ誤植で追加)
ここでは(サーバーとクライアント側のコード)作業例です。
<script>
$(document).ready(function() {
$('#s').click(function() {
var form_data = new FormData();
form_data.append("file_up", $('#f')[0].files[0]);
form_data.append("file_type", $('#t').val());
$.ajax({
url: "test.php",
type: "POST",
data: form_data,
processData: false,
contentType: false,
success: function(response) {
$('#output').html(response);
},
error: function(jqXHR, textStatus, errorMessage) {
console.log(errorMessage); // Optional
}
});
});
});
</script>
<input id="f" type="file"/>
<input id="t" type="text"/>
<button id="s">Submit</button>
<div id="output">
</div>
と対応しますPHPのページ:
<pre><?php
echo '$_FILES:<br>';
print_r($_FILES);
echo '<br><br>$_REQUEST:<br>';
print_r($_REQUEST);
?></pre>
コードが解決しない場合は、問題がクライアントまたはサーバ側であるかどうかを判断することができるかどうかを確認するために、ブラウザの開発者向けツール、ネットワーク]タブを使用してみてください。あなたのAJAX呼び出しを提出すると、あなたのXHRリクエストペイロードは、次のようになります。これは、Firefoxからである
-----------------------------16516352471776150483721558073
Content-Disposition: form-data; name="file_up"; filename="test.php.zip"
Content-Type: application/zip
......BINARY FILE DATA HERE......
-----------------------------16516352471776150483721558073
Content-Disposition: form-data; name="file_type"
lsajdflkajdf
-----------------------------16516352471776150483721558073--
を。私はクロムがおそらく同等の情報を提供していると仮定しています。
ファイルタイプの2番目のフォームデータセクションがない場合は、問題はJavaScriptのどこかにある可能性があります。 (この場合、ajax/FormDataコードをもう少し投稿すれば役に立ちます)。
セクションがある場合、問題はおそらくサーバー側のどこかにあります。 (その場合は、$_REQUEST
のデータを読み込もうとしているサーバーサイドコードのセクションを投稿したり、$_REQUEST
のprint_r
またはvar_dump
を
に書き込むと便利です