【问题标题】:AJAX $_FILES and $_POST simultaneouslyAJAX $_FILES 和 $_POST 同时
【发布时间】:2012-08-06 14:12:23
【问题描述】:

我正在尝试将产品以及一些图片添加到数据库中,服务器端是 PHP。我想通过 AJAX 异步上传所有内容。我希望将图片保存在产品 ID (thumbs/productID) 之后的目录名称中。

第一部分,即提交产品信息并检索其 id 已完成。但是,在上传文件时,我无法同时上传文件和字符串,以告知我的脚本要保存在哪个文件夹中。但是我只能发送文件。

有没有办法同时发送文件和文本?任何帮助将不胜感激。

$('#register-product').on('submit', function ( evt ) {
    evt.preventDefault();
    var i = 0, len = document.getElementsByName("images").length-1, reader, file;
    var myFiles = document.getElementsByName("images");
    // Adds all files to formdata
    for ( ; i < len; i++ ) {
        file = myFiles[i].files[0];
        if (!!file.type.match(/image.*/)) {
            if ( window.FileReader ) {
                reader = new FileReader();
                reader.readAsDataURL(file);
            }
            if (formdata) {
                formdata.append("images[]", file);
            }
        }   
    }
    // Send data to the server.
    if (formdata) {
        $.ajax({ 
            url: "upload.php",
            type: "POST",
            // data: formdata, // This is correct
            data: {formdata, id: 1}, // This doesn't work
            processData: false, 
            contentType: false,
            success: function (res) {
                console.log(res);
            }
        });
    }
});

【问题讨论】:

    标签: javascript jquery ajax post file-upload


    【解决方案1】:

    只需将另一个值附加到您的表单数据:

    //...
    formdata.append("id", 1);
    if (formdata) { //...
    

    您可以通过 $_POST["id"] 访问它。

    【讨论】:

    • 谢谢,正是我想要的。
    【解决方案2】:

    您不能使用 AJAX 发布请求发送文件。

    不会发送文件的标头数据。

    所以你需要做一些 iframe 技巧或使用文件 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2011-12-12
      • 1970-01-01
      • 2012-09-29
      • 2018-05-24
      • 1970-01-01
      相关资源
      最近更新 更多