我想使用 json 上传二进制文件。 我选择 Json 是因为我还想通过该文件发送附加信息。
我将通过 -
来做到这一点- 在文件输入标记中选择一个文件。
- 首先使用 HTML5 文件读取器 Api 读取文件。
- 将文件内容转换为 base64。
- 将base64内容以data uri格式添加到JS对象中。
- 将JS对象转换为json并post到服务器。
我想知道这是否是实现我的目标的唯一合法方式?另外,是否已经有一个插件可以给我这种能力?
最佳答案
不,这不是唯一的方法 - 其他方法之一就是提交包含文件的表单。此类表单使用 multipart/form-data
内容类型。
参见W3C documentation on the subject :
The content type "
application/x-www-form-urlencode
d" 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/