我需要从前端的html表单中将文件上传到我的nodejs服务器,然后将相同的文件从nodejs服务器中放到远程服务器https://developer.api.autodesk.com/oss/v2/buckets/${gArray.bucketKey}/objects/${gArray.fileName}
Step.1 {File in webpage} ---UPLOAD[POST]--> {My node server temp}
Step.2 {File in server temp} ---UPLOAD[PUT] --> {Another remote server}
我不想将文件存储在服务器上,我想将其作为octet-stream
立即上传到另一台远程服务器。
为此,首先,我将文件从前端上传到服务器:
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
if (!files || !files.file) {
return;
}
uploadToOtherServer(files.file).then(.....);
}
以上代码有效,并且文件已上传到nodejs服务器。之后,我想做的就是将上传的文件作为八位字节流发送到远程服务器。
function uploadToOtherServer(file){
const API_USERS_URL = `https://developer.api.autodesk.com/oss/v2/buckets/${gArray.bucketKey}/objects/${gArray.fileName}`;
return new Promise((resolve, reject) => {
let headers = {
"Content-Type": "application/octet-stream",
"Authorization": "Bearer " + gArray.access_token
};
const imageBuffer = fs.readFileSync(file.path);
console.log('>file.path', file.path);//prints the file path on the server
let req = http.request({
method: 'PUT',
uri: API_USERS_URL,
headers: headers,
json: true,
body: imageBuffer
}, (error, res, body) => {
if (error) {
reject('ERR_REQUEST_GEOMETRY_FILE_NOT_UPLOADED');
} else {
resolve(body);
}
});
});
}
我的问题出在第二个代码中,它没有上传文件并且在控制台中没有显示任何错误。
如何将{从网页上上传到我的服务器的文件)上传为application/octet-stream
到另一台服务器?我的代码中缺少什么?