如何通过AJAX将$ _FILES变量传递给PHP

时间:2016-11-06 02:51:37

标签: javascript php jquery ajax

我有一个表单,允许用户上传多个图像,然后将其附加到图库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;链接的帖子正在处理。

0 个答案:

没有答案