使用 NodeJS 发送多个文件总是给出状态 301

问题描述 投票:0回答:0

我正在使用节点 18,我创建了一个将多个文件转发到另一台服务器的功能。这些文件是缓冲区形式,我使用 multipart/form-data。问题总是在发送的每个文件上返回状态 301(重定向)。 谁能帮我修复我的代码?谢谢

转发文件的我的nodeJS函数:

import * as dotenv from 'dotenv';
import * as http from 'http';
import * as url from 'url';
import FormData from 'form-data';

const sendPost = (ticketKey, files, callback, callbackError) => {
  const parsedUrl = url.parse('http://localhost'); // 

  const promises = files.map((file) => {
    return new Promise((resolve, reject) => {
      const form = new FormData();
      form.append('file', file.data, {
        filename: file.filename.filename,
        contentType: file.mime,
      });

      const headers= form.getHeaders();
      headers['Accept']= 'application/json';

      const options ={
        hostname: parsedUrl.hostname,
        path: parsedUrl.pathname,
        redirect: 'follow',
        port: 3000,
        method: 'POST',
        headers: headers,
      };


      const req = http.request(options, (res) => {
        let data = '';

        res.on('data', (chunk) => {
          data += chunk;
        });

        res.on('end', () => {
          console.log('end', res.statusCode);
          if (res.statusCode >= 400) {
            const error = new Error(`HTTP error ${res.statusCode}`);
            reject(error);
          } else {
            resolve(data);
          }
        });
      });

      req.on('error', (error) => {
        reject(error);
      });
      form.pipe(req);
    })
        .catch((error) => {
          return {file: file.filename.filename, error: error.message};
        });
  });
  Promise.all(promises)
      .then((results) => {
        const errors = results.filter((result) => result.error);
        const successes = results.filter((result) => !result.error);
        console.log({successes: successes, failed: errors});
        callback({successes: successes, failed: errors});
      })
      .catch((error) => {
        callbackError(error);
      });
};

export {sendPost};

这是到达接收服务器的内容:

POST request
{
  'content-type': 'multipart/form-data; boundary=--------------------------177201756538675985959677',
  accept: 'application/json',
  host: 'localhost:3000',
  connection: 'close',
  'transfer-encoding': 'chunked'
}
File [file]: filename: "test2.pdf", encoding: "7bit", mimeType: "application/pdf"
File [file] got 28600 bytes
File [file] done
Done parsing form!
node.js post multipartform-data http-status-code-301
© www.soinside.com 2019 - 2024. All rights reserved.