प्रॉक्सी पास बहुखण्डीय में NextJS(भी NodeJS)

0

सवाल

मेरा काम था करने के लिए प्रॉक्सी के पास multipart/form-data के माध्यम से NextJS एपीआई मार्गों, लेकिन निर्मित में bodyParser टूट गया था आने वाली muptipart डेटा. किसी भी अन्य plugins के लिए NodeJS नहीं मुझे अनुमति देने के लिए प्रॉक्सी के पास स्पष्ट बाइट्स के बहुखण्डीय डेटा और दूसरों की वस्तुओं नहीं है जो फार्म-डेटा.

तो कैसे करने के लिए प्रॉक्सी के पास बहुखण्डीय/फार्म-डेटा में NextJS एपीआई-मार्गों plugins के बिना?

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

सबसे अच्छा जवाब

0

अगले कोड समाधान है सफलता के लिए प्रॉक्सी के पास multipart/form-data plugins के बिना के लिए 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ý
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में