我想使用 json 上传二进制文件。我选择 Json 是因为我还想通过该文件发送其他信息。
我将通过 -
- 在文件输入标签中选择一个文件。
- 首先使用 HTML5 File Reader Api 读取文件。
- 将文件内容转换为base64。
- 将 base64 内容添加到数据 uri 格式的 JS 对象中。
- 将 JS 对象转换为 json 并发布到服务器。
我想知道这是否是实现我的目标的唯一合法方式?另外,如果某个地方已经有一个插件可以给我这种能力?
我想使用 json 上传二进制文件。我选择 Json 是因为我还想通过该文件发送其他信息。
我将通过 -
我想知道这是否是实现我的目标的唯一合法方式?另外,如果某个地方已经有一个插件可以给我这种能力?
不,这不是唯一的方法 - 其他方法之一就是提交一个包含文件的表单。这种形式使用multipart/form-data
内容类型。
请参阅有关该主题的 W3C 文档:
内容类型“
application/x-www-form-urlencode
d”对于发送大量二进制数据或包含非 ASCII 字符的文本效率低下。内容类型“
multipart/form-data
”应用于提交包含文件、非 ASCII 数据和二进制数据的表单。
因此,无需重新发明轮子 - 浏览器已经支持以简单的方式发送文件以及附加信息。您只需创建一个表单,用户可以在其中输入数据并选择文件,然后所有这些都以内容类型发送到服务器multipart/form-data
,您的 Web 框架应该能够理解它同时处理文件和文本数据。