javascript - 如何在不使用 multipart 的情况下使用 AJAX 上传文件?

标签 javascript ajax file upload

我的应用程序允许用户上传的唯一文件是图像,它们始终作为表单中唯一的输入字段上传。因此,multipart 是不必要的,而且我可以在没有 multipart 解析器的情况下更轻松地使用文件。

如何使用 AJAX 和 vanilla Javascript 在不使用 multipart 的情况下上传文件?此外,它通常应该支持所有浏览器的最新版本。

最佳答案

您可以简单地通过 XHR 级别 2 发送关联的文件或 Blob 本身。例如,在我维护的上传库 ( Fine Uploader ) 中,您可以选择以多部分编码的 POST 请求(所有浏览器)或非MPE 请求(仅限支持文件 API 的浏览器)。

要在 MPE POST 请求中发送文件,您可能已经知道,您必须将文件添加到 FormData 对象并通过 XHR2 发送,或者提交包含文件输入的表单。如果您想在非 MPE POST 请求中上传文件,只需执行以下操作:

xhr.send(file);

当然,这只能在支持 File API 的浏览器中完成。此外,如果您想随文件一起发送任何参数,则必须将它们包含在查询字符串中。

关于javascript - 如何在不使用 multipart 的情况下使用 AJAX 上传文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16605263/

相关文章:

Javascript:在提交前检查表单内容是否已更改的快速方法

php - 错误异常,array_merge() : Argument #2 is not an array when i work a call Ajax

javascript - mainWindow未在 Electron js中接收数据

javascript - 使用 AJAX 调用在 Django 模板和 View 之间发送信息时出现问题

javascript - JQuery:在ajax生成的事件上注册事件

file - 测试来自 `ls/dev` 的字符串并只回显 block 文件

Java PrintWriter 关闭后不会追加到现有的 .txt 文件

c - 如何只读取每行的第一个单词?

javascript - jQuery slideDown() 没有动画(jquery-rails 3.0.4;jqu​​ery-ui-rails (4.0.5)

javascript - 为什么我应该测试 MSXML2.XmlHttp 和 Microsoft.XmlHttp 版本无关的 ProgID?