【问题标题】:Upload a file as json将文件上传为 json
【发布时间】:2014-10-29 09:27:06
【问题描述】:

我想以 json 格式提交表单数据,如示例 #9 http://darobin.github.io/formic/specs/json/ 所示。

我的表单如下所示:

<form id='myform'
      enctype='application/json'
      action=`http://localhost:8080`
      method='post'>
    <input type='text' name='textInput'>
    <input id='file' type='file' name='file' multiple>
    <button>submit</button>
</form>

但不幸的是,当我尝试提交表单时,我发现它们是按以下形式发送的 formData(它不是 JSON,只发送文件名,没有编码文件数据):

textInput:asdasd
file:Screenshot from 2014-10-14 18:10:05.png
file:Screenshot from 2014-10-25 11:25:26.png

我也尝试使用JSON.stringify($("#myform").serializeArray()); 对我的表单进行字符串化,但结果是: "[{"name":"textInput","value":"asdasdasd"}]" 文件输入中缺少数据。

以 json 格式发送表单数据的最佳方式是什么?

【问题讨论】:

    标签: json forms file rest post


    【解决方案1】:

    因为它的第一个工作草案是 2014 年 5 月,我非常怀疑它是否有任何重要的浏览器支持。

    目前,据我所知,发送 JSON 的仅有两种方式:

    1. 作为标准 URI 编码形式的一个字段;在服务器上,您将获取该字段的值,然后从中读取 JSON。您的文件字段将以通常的方式发送。

    2. 通过 ajax。但要以这种方式发送文件,您必须拥有modern browser(不能使用 IE8 或 9)。

    目前,选项 #1 可能是您的最佳选择。

    【讨论】:

    • 是的。它不在当前规范中。另外,json 中的文件必须是 base64 编码,如果我没有错的话。
    • @Jarema:是的,但是支持它的浏览器会为你做这件事。
    猜你喜欢
    • 1970-01-01
    • 2016-01-25
    • 2021-12-16
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多