在javascript中使用表单帖子将字符串作为文件上传

Upload a string as file using form post in javascript

本文关键字:字符串 文件 javascript 表单      更新时间:2023-09-26

我想在不使用文件输入的情况下伪造文件上传。文件的内容是从字符串生成的。即我想将一些字符串发布到内容类型为"多部分/表单数据"的服务器。

但是服务器具有不同的域并且不支持CORS,因此我无法使用XMLHttpRequest。是否可以仅使用普通表格帖子来执行此操作?

这实际上是一个很好的问题。以我的拙见,由于以下列出的各种原因,您正在寻找的内容是不可能的:

  • 你肯定可以有一个像这样的HTML表单:

    <form ....>
    <input id="blah" type="input" name="nameblah" ..>
    ...
    </form>
    

    但如您所知,您确实无法访问/修改所选文件的"内容"。立即的解决方案是使用隐藏字段作为替代方案并设置enctype=multipart/form-data,但对于隐藏字段,浏览器不会设置正确的Content-Disposition标头。

  • 您可以有一个 AJAX 调用,在其中手动构建整个请求正文,但正如您已经指出的那样,这将是一个跨域调用。通常的旁路技术适用。

解决方案是让提供HTML的服务器为您完成skydrive请求。在这种情况下,您将使用 HTML 表单或 javascript 上传文件。然后,该文件将被"转发"到 skydrive 服务器。

如果您尝试通过Javascript,请确保正确获取multipart/form-data格式。这是 RFC