【问题标题】:Upload a string as file using form post in javascript使用 javascript 中的表单发布将字符串作为文件上传
【发布时间】:2012-07-01 13:20:51
【问题描述】:

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

但是服务器是不同的域并且不支持CORS,所以我不能使用XMLHttpRequest。是否可以只使用普通形式的帖子来做到这一点?

【问题讨论】:

  • 使用普通的 HTML/Form 帖子,应该可以。您需要手动准备多部分结构,并以适当的边界跨内容类型发送。你到底想做什么?
  • 实际上我想将一些内容作为文件上传到 SkyDrive,而不使用服务器端代码。 SkyDrive 提供 REST api 但不支持 CORS。
  • 将表单定位到隐藏的 iframe 怎么样?

标签: javascript form-post


【解决方案1】:

这实际上是一个很好的问题。在我看来,您正在寻找的东西是不可能的,原因如下:

  • 你当然可以有一个像这样的 HTML 表单:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    相关资源
    最近更新 更多