私は(おそらく)複数のユーザ入力ファイルをajax経由でサーバサイドPHPに送信しています。 FormData()
オブジェクトを使用して送信します。$_FILES
をPHPに呼び出すと、FormData
内のファイルオブジェクトキーは「未確認のインデックス」と表示されます。私は説明を虐殺知っているので、ここでの文脈だ:サーバ側のPHPでAJAX経由でファイルを受け取る
HTML:
<form id="subForm" action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" multiple/>
<button type="submit">Post</button>
</form>
はJQuery:
var files = $('input[type=file]').prop('files')[0]; //File list
var formData = new FormData();
//Cycle through files (if many)
for (var i = 0; i < files.length; i++) {
var file = files[i]; //File
//Type and size check
if (!file.type.match('image/*') && !file.type.match('video/*') && file.size > 8388608){
continue;
}
// Add the file to the request.
formData.append('files', file, file.name);
}
$.ajax({
type: 'POST',
url: 'submission.php', //Serverside handling script
enctype: 'multipart/form-data',
dataType: 'text', //Get back from PHP
processData: false, //Don't process the files
contentType: false,
cache: false,
data: formData,
success: function(php_script_response){
console.log(php_script_response);
}
});
PHP:PHPリターンで
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){
if(is_uploaded_file($_FILES['files']['tmp_name'][$key]) && $_FILES['files']['tmp_name'][$key]['error']==0) {
$path = 'uploads/' . $_FILES['files']['name'][$key];
$upload = true;
if(file_exists($path)){
//Re-Upload
$upload = false;
}
if(move_uploaded_file($_FILES['files']['name'][$key], $path)){
//Success
}else{
//Failure
}
}else{
//File not uploaded/ saved?
}
}
1行目:
は未定義のインデックス:Cでファイル:\ xamppの\ htdocsに\
submission.php私の推測は何かが私のローカルのApacheサーバー、またはjQueryを使って間違っているのどちらかであるということでしょうか?あなたは.prop('files')[0]
で入力から単一の値のみをつかんでいるので、事前に
おかげ
ファイルの代わりにファイルを使用する必要があります。 $ _FILES ['files']を$ _FILES ['file']に変更します。 –
私は同じエラーを受け取りますが、 "ファイル"は未定義の "ファイル"の代わりに表示されます。私はJQueryとPHPの両方で "ファイル"を "ファイル"に変更しました。 – Lolechi
配列$ _FILES var_dump($ _ FILES) –