프록시를 통과 여러 부분에서 NextJS(도 및 라이브러리)

0

질문

내 작업을 프록시 전달 multipart/form-dataNextJS api 노선이지만,내장 bodyParser 기가 들어오는 muptipart 데이터입니다. 어떤 다른 사람 플러그인에 대한 및 라이브러하지 않도록하는 프록시를 통과 맑은 바이트의 다중 데이터를 만들고 다른 사람을 개체하지 않은 양식이다.

그래서 어떻게 전달하는 프록시 multipart/양식에서 데이터 NextJS API-로지 않고 플러그인은 무엇입니까?

multipartform-data next.js node.js proxy
2021-11-23 17:03:25
1

최고의 응답

0

다음 코드는 이 솔루션을 성공을 전달하는 프록시 multipart/form-data 지 않고 플러그인에 대한 NextJS:

// /pages/api/miltipart.ts

// helpers to generate cookies
import { setCookies } from '@utils/api';
import type { NextApiRequest, NextApiResponse } from 'next';

// turn off default parser for current route
export const config = {
  api: {
    bodyParser: false,
  },
};

const handler = async (req: NextApiRequest, res: NextApiResponse): Promise<void> => {
  // create container for all buffers of multipart/form-data
  const buffers: any[] = [];
  // first of all listen 'readable' event to catch all incoming request data
  req
    .on('readable', () => {
      // read every incoming chunk. Every chunk is 64Kb data of Buffer
      const chunk = req.read();
      if (chunk !== null) {
        buffers.push(chunk);
      }
    })
    // listen on end event of request to send our data
    .on('end', async () => {
        try {
          const result = await fetch('https://google.com/api/upload', {
            method: 'POST',
            credentials: 'include',
            mode: 'cors',
            headers: {
              'Content-Type': req.headers['content-type'] ?? 'multipart/form-data',
              'User-Agent': req.headers['user-agent'] ?? '',
              Authorization: 'Bearer Token',
            },
            // concatination of array of Buffers and store it to body
            body: Buffer.concat(buffers),
          });
          const body = await result.json();
          setCookies(res, result.headers);
          res.status(result.status).json(body);
          return;
        } catch (error) {
          res.status(500).json(error);
        }

      res.status(405);
      res.send('Method Not Allowed');
    });
};
export default handler;
2021-11-23 17:03:25

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................