无法使用Node.js中的发布请求上传文件

时间:2018-08-20 12:36:03

标签: node.js http-post multipartform-data request-promise

从早上开始,我浏览了许多文章,但是无法使用本地服务器上的发布请求上传文件。 在下面给出的代码中: 首先,我使用get请求通过单击我的登录api获取保存在浏览器中的cookie值。然后,我使用该cookie值将文件上传到服务器,但这并没有通过我的代码发生。

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const rp = require('request-promise');
const cookie = require('cookie');
const fs = require('fs');
const FormData = require('form-data');
let cookieValue;


const callback = (cookieValue) =>{
    console.log(cookieValue);
        let form = new FormData();
        let cookiejar = rp.jar();
        cookiejar.setCookie(cookieValue, 'http://gitdev/PEG/PCTInterface/ImportExportProject.ashx?mode=ImportHardCodedProject');
        var auth = new Buffer("AccessContentAdmin" + ':' + 'system@123456').toString('base64');
        // form.append('file', stdout, {
        //     filename: 'unicycle.jpg', // ... or:
        //     filepath: 'photos/toys/unicycle.jpg',
        //     contentType: 'image/jpeg',
        //     knownLength: 19806
        //   });



        let options1 = {
            uri: 'http://gitdev/PEG/PCTInterface/ImportExportProject.ashx?mode=ImportHardCodedProject',
            jar: cookiejar,
            method: 'POST',
            formData: {
                file: {
                    value: fs.createReadStream("D:/Temp/2018-08-20/"+"Peg_1428_EX16_AC_CH05_GRADER_ML2_HW - Northwind Traders.hcp"),
                    options: {
                        filename: "Peg_1428_EX16_AC_CH05_GRADER_ML2_HW - Northwind Traders.hcp",
                        contentType: 'multipart/form-data; boundary=----WebKitFormBoundaryO0m7k3X2JHeCflqY'
                    }
                }
            },
            headers: {
                Authorization: 'Basic ' + auth,
                contentType: 'multipart/form-data; boundary=----WebKitFormBoundaryO0m7k3X2JHeCflqY'
                    },
            proxy: "http://127.0.0.1:8888"
        };
    rp(options1)
        .then((body) => {
            // POST succeeded..
            // rp(options1)
            console.log(`Magic happened ${body}`);
        })
        .catch(function (err) {
            // POST failed...
            console.log("Magic Failed.... "+err);
        });
}


((loginUrl,callback)=>{
    let options = {
        uri: loginUrl,
        method: 'GET',
        resolveWithFullResponse: true,
        json:true
      };
    rp(options)
    .then(function(res) {
        // console.log(res.sessionID);
        cookieValue = cookie.parse(res.headers['set-cookie'][2])['.PCTFORMS'];
        console.log(cookieValue);
        callback(cookieValue);
    })
    .catch((err)=>{
        console.log(err);

    });
})('http://gitdev/PEG/PCTInterface/LogIn.ashx?wsid=&user=AccessContentAdmin&pass=system%40123456&proj=&csuser=&mode=none&moduleName=office2016',callback);

执行此代码时,我通过控制台收到此正文消息。

Magic happened {"returnData":{"projectId":0},"statusData":{"status":"1","errormsg":"You are not authorized to perform this action.","exceptionmsg":null},"updateData":null}

即没有上载错误,但是当我使用邮递员点击此api时,我可以获取成功消息,即:-

{"returnData":{"projectId":846},"statusData":{"status":"2","errormsg":null,"exceptionmsg":null},"updateData":null}

在这里我无法弄清我做错了什么。我已通过 request request-promise npm模块文档以及从有关上传多部分/表单数据的各种在线文章中获得帮助,但同时我也无法消除我的错误。

任何帮助将不胜感激。在此先感谢您。如果我有关于堆栈溢出的第一个问题,如果有什么遗漏,请问我,但不要拒绝投票。

0 个答案:

没有答案