【问题标题】:Submitting data instead of a file for an input form为输入表单提交数据而不是文件
【发布时间】:2013-07-14 19:56:31
【问题描述】:

我正在使用 jQuery 检索图像并将其发布到另一个表单:

handler = function(data, status) {
    ...
    var fd;
    fd = new FormData;
    fd.append("file", data);
    jQuery.ajax({
      url: target_url,
      data: fd,
      processData: false,
      contentType: false,
      type: "POST",
      complete: function(xhr, status) {
        console.log(xhr.status);
        console.log(xhr.statusCode);
      }
    });
};
jQuery.get(imageUrl, null, handler);

表单看起来像这样:

<form>
  <input type="file" name="file" />
  ...
</form>

事情没有按预期工作。我从服务器端收到 200 响应,它使用一些预先填充的值呈现表单。

我也试过设置contentType: "multipart/form-data"

任何想法为什么这不起作用?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您发送的字符串不会被识别为文件。 尝试发送 blob

    fd.append("file", new Blob([data], { "type" : "text/plain" }));
    

    我很确定这仅适用于文本文件,除非您在原始请求中设置了 responseType。

    【讨论】:

    • 嗯。如果这是一张图片,我是否需要相应地设置类型? “图片/png”等
    • 嗯,这确实起到了作用。谢谢 :) 现在我只需要弄清楚为什么图像的大小发生了变化。原始图像大小 15k,提交的数据 = 35k :/
    • jQuery 的 ajax 方法不允许 Blob 响应类型。有必要直接使用 XMLHttpRequest 吗?似乎是任意限制。
    • @jabalsad 你不能使用$.get,但我相信你可以使用$.ajax
    猜你喜欢
    • 2018-09-23
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2015-11-11
    • 1970-01-01
    相关资源
    最近更新 更多