javascript - 使用 Json 发布文件

标签 javascript json base64 data-uri

我想使用 json 上传二进制文件。 我选择 Json 是因为我还想通过该文件发送附加信息。

我将通过 -

来做到这一点
  1. 在文件输入标记中选择一个文件。
  2. 首先使用 HTML5 文件读取器 Api 读取文件。
  3. 将文件内容转换为 base64。
  4. 将base64内容以data uri格式添加到JS对象中。
  5. 将JS对象转换为json并post到服务器。

我想知道这是否是实现我的目标的唯一合法方式?另外,是否已经有一个插件可以给我这种能力?

最佳答案

不,这不是唯一的方法 - 其他方法之一就是提交包含文件的表单。此类表单使用 multipart/form-data 内容类型。

参见W3C documentation on the subject :

The content type "application/x-www-form-urlencoded" is inefficient for sending large quantities of binary data or text containing non-ASCII characters.

The content type "multipart/form-data" should be used for submitting forms that contain files, non-ASCII data, and binary data.

因此,无需重新发明轮子 - 浏览器已经支持以简单的方式发送文件和附加信息。您只需创建一个表单,用户可以在其中输入数据并选择文件,然后所有这些内容都会以 multipart/form-data 内容类型发送到服务器,并且您的 Web 框架应该能够理解这一点它处理文件和文本数据。

关于javascript - 使用 Json 发布文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14067108/

相关文章:

javascript - 从外部门户网站将参数传递给 GWT nocache.js

c# - 将 json 转换为 C# 数组?

ios - JSON 到 NSDictionary。不应该这么难吗?

java - 从 Base64 编码的字符串中检索 MIME 类型

ios - 无法在 iOS 上的 Swift 中将 base64 字符串发送到服务器

javascript - 仅在不使用 jQuery 的情况下滑动切换没有高度和填充的元素

javascript - 滚动 3 个骰子 50 次并将每个骰子存储在数组中并以 html 形式显示

java - 如何在 Java 中将 JSON 架构中的默认值添加到 JSON 文档

Javascript 模块声明 - 性能