我有一个表单,允许用户上传多个图像,然后将其附加到图库div以便在提交表单之前显示。我现在的问题是我的上传脚本没有接收到移交的附件变量(既不通过POST或GET),因为上传脚本期望文件作为$ _FILES []变量提交。如何将我的附件传递给AJAX并以一种拾取它的方式将它们发送到PHP脚本?
HTML + JS
<div>
<font>Attachments (.jpg, .png, .bmp):</font>
<input name="file" id="file" type="file" accept="image/*" multiple />
<p class="help-block">Max. filesize 5MB</p>
</div>
<script type="text/javascript" language="javascript">
$(function () {
$("#file").change(function (e) {
e.preventDefault();
var new_img = new FormData(document.getElementById("file"));
new_img.append("label", "new_mod_gallery");
$.ajax({
url: "./templates/upload.php",
type: "POST",
enctype: 'multipart/form-data',
data: new_img,
processData: false,
contentType: false,
cache: false,
success: function(data) {
console.log(data);
$("#lightBoxGallery").load(location.href + " #lightBoxGallery");
},
});
});
});
</script>
upload.php的
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
if (isset($_POST['label']) && $_POST['label']=='new_mod_gallery') {
// check if any attachments have been selected
if(count($_FILES['file']['name']) > 0) {
// do the upload
} else {
echo "No upload files submitted.";
die();
}
} else { echo "No data received."; }
?>
编辑:调整JS以包含encodetype,并根据需要将processType和dataType调整为false。
对于将此标记为重复的海报,事实并非如此。我的问题是如何通过AJAX向PHP提交文件上传请求并让PHP将变量提取为$ _FILES [],而不是主题为#34;如何通过jquery AJAX上传文件&#34;链接的帖子正在处理。