如何上传文件不使用多部分编码?(可能使用八位字节或其他什么)

how to upload file NOT using multipart encoding? (maybe use octect or something)

本文关键字:八位 字节 什么 其他 编码 文件 多部      更新时间:2024-02-04

我们希望我们的web应用程序能够从浏览器上传文件(用户以标准方式选择文件),但无论是ajax还是非ajax,我们都希望该文件占据POST的整个主体,而主体中没有其他内容(即,我们真的不想要所有其他字段,只需要文件内容)

我读到一些关于ajax可能有一种方法可以做到这一点,但似乎找不到任何与application/octect流或其他相关的信息。

以前有人这样做过吗?html/javascript是什么样子的才能正确工作,这样这也是一个分块文件,而不是作为一个巨大的东西发送到Web服务器。

html 5中有什么对这里有帮助吗。

谢谢,Dean

这很简单,只需将blob/文件作为参数传递给您对XHR实例上的send方法的调用,例如:

function uploadFile(blobOrFile) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://mydomain.com/upload", true);
    xhr.send(blobOrFile);
}

请注意,这仅适用于File API浏览器(即IE9及更早版本)

我想我最终会像这段代码一样尝试websockets方法(刚刚发现)

https://github.com/jberger/GalileoSend/blob/master/js/galileo_send.js

因为我们在负载均衡器后面有4个无状态服务器,如果我使用xmlhttprequest方法,我会在不同的服务器上得到块,只要我复制要放在每个块中的文件的头,但我只是决定放弃这一点,转而使用websocket,希望这也能稍微减少http开销,尽管我会错过一些与xmlhttprequest的并行性。

这只是我想在这里补充的另一个答案,以完成我认为我们都有的选择。