从早上开始,我浏览了许多文章,但是无法使用本地服务器上的发布请求上传文件。 在下面给出的代码中: 首先,我使用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模块文档以及从有关上传多部分/表单数据的各种在线文章中获得帮助,但同时我也无法消除我的错误。
任何帮助将不胜感激。在此先感谢您。如果我有关于堆栈溢出的第一个问题,如果有什么遗漏,请问我,但不要拒绝投票。