1
如何使用節點http模塊(並且沒有第三方庫)將文件上傳到遠程服務器?上傳帶有節點http模塊的文件
我嘗試以下,但它不工作(我得到的服務器上沒有數據):
function writeBinaryPostData(req, filepath) {
var fs = require('fs');
var boundaryKey = Math.random().toString(16); // random string
var boundaryStart = `--${boundaryKey}\r\n`,
boundaryEnd = `\r\n--${boundaryKey}--`,
contentDispositionHeader = 'Content-Disposition: form-data; name="file" filename="file.txt"\r\n',
contentTypeHeader = 'Content-Type: application/octet-stream\r\n',
transferEncodingHeader = 'Content-Transfer-Encoding: binary\r\n';
var contentLength = Buffer.byteLength(
boundaryStart +
boundaryEnd +
contentDispositionHeader +
contentTypeHeader +
transferEncodingHeader
) + fs.statSync(filepath).size;
var contentLengthHeader = `Content-Length: ${contentLength}\r\n`;
req.setHeader('Content-Length', contentLength);
req.setHeader('Content-Type', 'multipart/form-data; boundary=' + boundaryKey);
req.write(
boundaryStart +
contentTypeHeader +
contentDispositionHeader +
transferEncodingHeader
);
fs.createReadStream(filepath, { bufferSize: 4 * 1024 })
.on('data', (data) => {
req.write(data);
})
.on('end',() => {
req.write(boundaryEnd);
req.end();
});
}