@atumbochka

Чем req.files отличается от req.body?

У меня есть код, где отправляется post-запрос с помощью формы, но мне нужно сделать с помощью fetch. Когда я отправляю файл на сервер, req.files становится undefined, а req.body принимает этот файл, но весь код построен именно на req.files, можно ли как-то перенаправить файлы в req.files? В await fetch я могу выбрать body, но files я выбрать не могу.
app.post("/upload", function (req, res, next) {
    console.log(req.body)
    if (req.files == undefined) {
        console.log(req.files);
    } else {
        if (req.files.filedata[0]) {
            req.files.filedata[0].mv(path.join(fileStoragePath, req.files.filedata[0].name));
            let index = req.files.filedata[0].name.lastIndexOf('.')
            // let index2 = req.files.filedata[1].name.lastIndexOf('.')
            // let currentExstension = req.files.filedata[1].name.slice(index2)
            let imgName = req.files.filedata[0].name.replace(req.files.filedata[0].name.slice(index), '.jpg')
            console.log(imgName)
            req.files.filedata[1].mv(path.join(imagesPath, req.files.filedata[1].name))
            setTimeout(() => {
                fs.renameSync(path.join(imagesPath, req.files.filedata[1].name), path.join(imagesPath, imgName), () => {console.log("renamed")})
            }, 110);
        } else {
             req.files.filedata.mv(path.join(fileStoragePath, req.files.filedata.name));
        }
    }
    
});


Эти файлы отправляются в body:
const handleChange = async (filedata) => {
        setFile(filedata);
        console.log(filedata)

        await fetch("http://localhost:3011/upload", {
            method: "POST",
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({filedata: filedata[0]})
        });
    }


А эти, почему-то, в req.files:
<form action={'http://localhost:' + PORT + '/upload'} method="post" encType="multipart/form-data">
              <label className="uploadTxt">Add audio to playlist</label><br />
              <input accept=".mp3" type="file" name="filedata" id="filePath" /><br/>
              <label htmlFor="filePath" className="fileUpload">Choose audio</label><br/>
              <input accept=".jpg" type="file" name="filedata" id="filePath2" /><br/>
              <label htmlFor="filePath2" className="fileUpload2">Choose image</label><br/>
              <input className="submitInput" type="submit" value="Upload file" />
            </form>
  • Вопрос задан
  • 369 просмотров
Пригласить эксперта
Ответы на вопрос 1
Используйте FormData
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы