[英]How to upload a binary body with a PUT request in Node.js using needle or request libraries
我正在嘗試在亞馬遜預簽名上傳 url 上編寫單元測試,該 url 接受帶有原始二進制正文的 PUT 請求。
查看needle 和request 庫的示例,它們都使用表單數據示例。 有人可以給我一個使用任何一個庫的例子,它將本地文件作為原始二進制文件發送到請求正文中嗎?
請求庫https://github.com/request/request
針庫https://github.com/tomas/needle
var filename = 'bunny.jpg';
var url = Amazon.getUploadUrl(filename);
var data = {
file: __dirname + '/' + filename,
content_type: 'image/jpeg'
};
var file = fs.createReadStream(__dirname + '/' + filename);
var request = require('needle');
request
.put(url, data, function(err, resp) {
console.log(resp.body.toString('utf-8'));
if (resp.statusCode !== 200) {
done(new Error(resp.statusMessage));
}
else
done(err);
});
我使用promise-request發送帶有 PUT 請求的二進制正文,但您可以使用請求庫或針庫修改此代碼。
// Don't put encoding params in readFile function !
fs.readFile("example.torrent", function (err, file) {
if (err) {
throw err;
}
var r = request({
method: 'PUT',
uri: 'https://api.mywebsite.com/rest/1.0/addFile',
headers: {
"Content-Type": "application/octet-stream" // Because binary file
},
json: true // Because i want json response
});
r.body = file; // Put the file here
r.then(function (response) {
console.log("success", response);
}).catch(function (error) {
console.log("error", error);
});
});
您需要設置的只是Content-Type
標頭 使用axios
lib
return axios({
method: "put",
url: your_url,
headers: { "Content-Type": "application/octet-stream" },
data: Buffer.from(blob.data)
});
其中bolb
的類型為 File (req.body.files)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.