如何将上传的文件从前端上传到服务器,然后再上传到另一台服务器

时间:2019-09-05 08:37:11

标签: node.js

我需要从前端的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到另一台服务器?我的代码中缺少什么?

0 个答案:

没有答案