【问题标题】:Javascript form data object submit file to the $_FILES server variableJavascript 表单数据对象提交文件到 $_FILES 服务器变量
【发布时间】:2021-05-21 15:43:12
【问题描述】:

我正在尝试使用 javascript formData 对象上传文件。

                                    var formData = new FormData(form[0]);
                                    formData.append('attachments[]', 
                                    localStorage.getItem('file_content'));
                                    $.ajax({
                                        url: form[0].action,
                                        type: "POST",
                                        enctype: 'multipart/form-data',
                                        processData: false,
                                        contentType: false,
                                        cache: false,
                                        data: formData,
                                        success: function(response){
                                            console.log(response);
                                        }
                                    });

因此,本地存储“file_content”具有 blob 格式的文件内容。上面的代码有效,但问题是文件内容是作为 $_POST 变量提交的。我希望文件被提交并在 $_FILES 服务器变量中可用。有没有可能做到这一点。请帮忙。

【问题讨论】:

  • 阅读this。你不能序列化一个文件对象。
  • 将 blob 转换为 base64,如果您想通过 ajax 发送它。另一种情况是简单创建一个表单直接上传,无需本地存储(除非有必要)这两种情况对你发送的内容都有限制。
  • @gmastro 转换为 base64 将使其在 $_FILES 中可用?出于安全考虑,表单文件输入不允许以编程方式更改值。
  • @Akhilesh 检查您的 POST 请求。 1) 在浏览器上打开控制台,查看 attachment[] 参数是否在您的请求数据中 2) 添加一个服务器端转储,它将回显请求内容 $_POST。如果没记错的话,$_FILES superglobal via ajax 上几乎没有任何数据没有attachments[] 参数,那么请检查MDN USVString、Blob 和FileReader 以及如何将数据转换为FormData 可接受的格式。此外,始终尝试最简单的方法。直接发送帖子,而不是通过 ajax。当你拥有它时,使用 file_put_contents 或 Symphony 提供的任何东西。

标签: javascript php symfony4


【解决方案1】:

试试这个代码....! 通常,必须运行!

var myForm = $("#formid")[0]
var formdata = new FormData(myForm);
            $.post({url:"path/to/traitment", data:formdata, contentType:false, processData:false}, 
             function(data){
                // your code here ...
            }, 'json');

在你的 php 文件中

var_dump($_FILES);
//for to check if that exist !

【讨论】:

    猜你喜欢
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 2021-03-31
    • 2017-12-31
    相关资源
    最近更新 更多