В моем приложении Node.js есть следующая конечная точка:
app.post('/uploadimage', function (req, res) {
var form = new multiparty.Form();
form.parse(req, function(err, fields, files) {
if (err){
console.log(err);
res.send("File(s) upload error");
return;
}
if (files && files.uploadimage){
var imgArray = files.uploadimage;
for (var index = 0; index < imgArray.length; index++) {
var newPath = '/path/to/my/files/';
var img = imgArray[index];
newPath += img.originalFilename;
readAndWriteFile(img, newPath);
}
res.send("File(s) uploaded");
}
else {
res.status(400).send("No 'uploadimage' present in upload request");
}
});
});
Когда я отправляю изображение непосредственно на него с помощью запроса данных формы в Postman, оно работает нормально.Заголовки в запросе / uploadimage выглядят так:
{ host: 'localhost:7777',
connection: 'keep-alive',
'content-length': '1314170',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'cache-control': 'no-cache',
origin: 'chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop',
'postman-token': 'd83b600b-9739-1433-801d-.....',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundaryhOg3mqey3UTHR3G0',
accept: '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8' }
Однако, когда я пересылаю тот же запрос через конечную точку / forwardpost, показанную ниже:
app.post('/forwardpost', function (req, res) {
const options = {
url: 'https://localhost:7777/uploadimage',
method: 'POST',
headers: req.headers
};
// act as proxy for POST request, returning result through here
request(options, function(err, response, body) {
// ... handle response here ...
});
});
Это не работаети заголовки выглядят так (с длиной содержимого, равной нулю):
{ host: 'localhost:7777',
connection: 'keep-alive',
'content-length': '0',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'cache-control': 'no-cache',
origin: 'chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop',
'postman-token': 'c1612b11-be20-47c4-716a-.....',
'content-type': 'multipart/form-data; boundary=----WebKitFormBoundaryhdDKQwuCTXP9JCjj',
accept: '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8' }
Я попытался вручную установить длину содержимого на известное значение, но это не проблема.Может кто-нибудь посоветовать мне, как на самом деле передать файл изображения через конечную точку / uploadimage?
РЕДАКТИРОВАТЬ: Включая скриншот, чтобы показать, как я выполняю запрос в Почтальон