好吧标题没有多大帮助,所以让我解释一下我非常奇怪的设置。
涉及两台服务器:
工作流程如下:
发出请求并进行存档 - 一切都很好。存档是可以打开的,一切都很好。我现在坚持的是如何将该存档作为AJAX响应来传达,以便它可以“再次组合”(例如Humpty Dumpty)。当我这样做(通过file_put_contents()
)时,它在打开时出错,说它无效。目前我只是输出档案的原始数据:
echo file_get_contents('path/to/archive.zip');
这很好,但在响应中发送乱码。我对编码和标题知之甚少,所以如果这看起来很明显就道歉。
对于响应,我应该将其转换为二进制,还是发送某些标头等?我尝试发送multipart / form-data标头,但没有骰子。标题不是我的强项。
在这种情况下请注意 cURL不是一个选项,否则我会笑。
答案 0 :(得分:1)
您必须使用Blob javascript类将zip文件读取为二进制数据。
这是Mozilla文档的代码片段
var oReq = new XMLHttpRequest();
oReq.open("GET", "/myfile.png", true);
oReq.responseType = "arraybuffer";
oReq.onload = function(oEvent) {
var blob = new Blob([oReq.response], {type: "application/octet-stream"}); //
// you have nothing to do with the blob...
// ...
};
oReq.send();
然后使用POST方法将此文件(blob)发送到目的地
var oReq = new XMLHttpRequest();
oReq.open("POST", url, true);
oReq.onload = function (oEvent) {
// Uploaded.
};
oReq.send(blob); //the blob that you loaded