我正在製作一個表單來上傳照片,而且我有多個no。輸入類型的「文件」字段在單個表單下具有不同的字段名稱。表單提交後多輸入類型的'文件'字段變空
此外,我使用ajax發送這些文件。我是PHP新手,我在搜索解決方案時花了大約6個小時的時間,並且處理了很多變體,但無法解決。
我面臨的問題是隻有一個字段的文件傳遞給PHP,而其他字段爲空。文件移動成功後只獲取一個字段的輸出。在檢查'print_r'後,我發現這些數組是空的。
我的圖片文件不超過250 KB和JPG。那麼沒有任何文件大小和類型問題。
HTML代碼(從PHP呼應AJAX請求後):
<form action=\"upload.php\" method=\"POST\" enctype=\"multipart/form-data\" class=\"upload-inputs\">
<div class=\"upload-wrap\">
<input placeholder=\"Choose a file..\" class=\"file-name\" type=\"text\">
<input type=\"file\" name=\"file1\" id=\"file\" class=\"inputfile\">
<label for=\"file\">Browse</label>
</div>
<div class=\"upload-wrap\">
<input placeholder=\"Choose a file..\" class=\"file-name\" type=\"text\">
<input type=\"file\" name=\"file2\" id=\"file\" class=\"inputfile\">
<label for=\"file\">Browse</label>
</div>
<div class=\"upload-wrap\">
<input placeholder=\"Choose a file..\" class=\"file-name\" type=\"text\">
<input type=\"file\" name=\"file3\" id=\"file\" class=\"inputfile\">
<label for=\"file\">Browse</label>
</div>
<button class=\"manage-btn upload-btn\" type=\"submit\">Upload</button>
</form>
<div class=\"upload-alert\"></div>
JQuery的& AJAX:
$(document).on('submit','.upload-inputs', function(e) {
e.preventDefault();
$.ajax({
url : "upload.php",
method: "POST",
data : new FormData(this),
processData: false,
contentType: false,
success:function(mesg)
{
$(".upload-alert").html(mesg);
}
});
});
不使用多個文件選擇,因爲在移動瀏覽器(Chrome)檢查後,我發現,它不允許在手機中選擇多個文件。所以使用不同的單個輸入字段。
'upload.php的' 代碼:
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Having this same code for 'file2' & file3 below (Just changing the variable names to file2 & file3)
if(!empty($_FILES['file1']))
{
$file1 = $_FILES['file1'];
$file1_name = $file1['name'];
$file1_tmp = $file1['tmp_name'];
$file1_error = $file1['error'];
$file1_size = $file1['size'];
$file1_size = $file1_size/1024;
$file1_size = number_format($file1_size, 0);
$file1_ext = explode('.', $file1_name);
$file1_ext = strtolower(end($file1_ext));
$allowed = array('jpg');
if (in_array($file1_ext, $allowed))
{
if($file1_error === 0)
{
if($file1_size <= 2048)
{
$file1_name_new = uniqid(rand()) . ".$file1_ext";
$file1_destination = 'profile_image/'.$file1_name_new;
// Output if successfully moved.
if (move_uploaded_file($file1_tmp, $file1_destination))
{
echo " <div class=\"files-bar1\">
<button class=\"manage-btn delete-image\">Delete</button>
<img class=\"image-thumb\" src=\"profile_image/$file1_name_new\">
<label class=\"image-name\">$file1_name_new</label><br>
<p class=\"image-size\">$file1_size KB</p><br>
<p class=\"percentage\">_% Completed</p><br/>
<progress class=\"upload-progress\" min=\"0\" max=\"100\"></progress>
<label class=\"stop-uploading\">✖</label>
</div>";
}
else
{
echo "Sorry, something went wrong. Please try again later.";
}
}
else
{
echo "Image Size Must Be Under 2 MB.";
}
}
else
{
echo "Caught Error.";
}
}
else
{
echo "Only JPG/JPEG format is allowed.";
}
}
else
{
echo "file1 Undefined.";
}
}
好了的話,你是提供沒有工作對我來說是Ajax代碼..我不知道你是怎麼設法拿到了產量,但對我來說,當我上傳的圖片我正在收到當我的if條件返回false時設置爲接收的消息「Undefined file1」。 但有一點拍了拍我,你告訴我,我不能用同一個ID的所有字段。所以我用我的工作AJAX代碼,更改ID和它的工作。 另外,我使用的斜線在HTML,因爲我從一個php文件輸出HTML形式。」我想堅持多單輸入字段的原因。 不管怎樣,現在它的作品。謝謝! –