У меня есть код, где отправляется 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>