使用javascript中的表单发布字符串作为文件

时间:2012-07-01 13:20:52

标签: javascript form-post

我想在不使用文件输入的情况下伪造文件上传。文件的内容是从字符串生成的。即我想将一些字符串发布到内容类型为“multipart / form-data”的服务器上。

但是服务器具有不同的域并且不支持CORS,因此我无法使用XMLHttpRequest。是否可以仅使用普通表格发布?

1 个答案:

答案 0 :(得分:0)

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

  • 您肯定可以使用以下格式的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