Как в Next JS, отправка файлов на сервер с указанием пути сохранения?

В Next.js, фреймворке для разработки React приложений, пересобираемых на стороне сервера, отправка файлов на сервер с указанием пути сохранения может быть реализована с использованием различных подходов.

Один из подходов предполагает использование модуля fs (file system) из стандартной библиотеки Node.js для чтения и записи файлов на сервере. Для начала вам потребуется импортировать модуль в вашем Next.js приложении:

const fs = require('fs');

Затем, вы можете обрабатывать запросы на загрузку файлов с помощью API маршрутов Next.js. Для этого вам следует создать директорию pages/api, а затем создать файл upload.js (или любое другое имя на ваше усмотрение).

Далее, внутри этого файла можно использовать модуль fs для работы с файлами. Вот пример обработчика загрузки файла, который сохраняет загруженный файл в указанном пути:

import fs from 'fs';
import formidable from 'formidable';

export const config = {
  api: {
    bodyParser: false,
  },
};

export default function handler(req, res) {
  const form = new formidable.IncomingForm();

  form.parse(req, (err, fields, files) => {
    if (err) {
      console.error(err);
      res.status(500).json({ error: 'Failed to upload file' });
      return;
    }

    const tempPath = files.file.path;
    const newPath = `/path/to/save/file/${files.file.name}`;

    fs.rename(tempPath, newPath, (err) => {
      if (err) {
        console.error(err);
        res.status(500).json({ error: 'Failed to save file' });
        return;
      }

      res.status(200).json({ message: 'File uploaded successfully' });
    });
  });
}

В этом примере используется пакет formidable для обработки мультипартных (multipart) запросов на загрузку файлов. Загруженный файл сохраняется с помощью метода fs.rename(), который переименовывает файл из временной директории в указанный путь.

Также, не забудьте указать api в поле config для API маршрута, чтобы Next.js корректно обработал этот файл-обработчик.

Обратите внимание, что вам необходимо указать корректный путь (/path/to/save/file/) для сохранения файлов на вашем сервере.