Cześć,
dodałem do swojego projektu middleware do dodawania plików zgodnie z: https://github.com/gitdagray/node_file_uploader
Samo wysyłanie zrealizowałem inaczej. Użyłem Reacta. Serwer zapisuje plik poprawnie gdy używam postmana. Gdy wysyłam za pomocą frontendu dostaję błąd po stronie node:
Error: Unexpected end of form
Oto formularz react:
function FileUploadMultiple() {
const [fileList, setFileList] = useState(null);
const handleFileChange = (e) => {
setFileList(e.target.files);
};
const handleUploadClick = () => {
if (!fileList) {
return;
}
const data = new FormData();
Object.keys(fileList).forEach(key => {
data.append(fileList.item(key).name, fileList.item(key))
})
fetch('http://127.0.0.1:3001/upload', {
method: 'POST',
body: data,
})
.then((res) => res.json())
.then((data) => console.log(data))
.then(()=> {setFileList(null)})
.catch((err) => console.error(err));
};
const files = fileList ? [...fileList] : [];
return (
<div className='filed'>
<div className="file">
<label htmlFor="" className="label file-label">
<input type="file" onChange={handleFileChange} multiple />
<ul>
{files.map((file, i) => (
<li key={i}>
{file.name} - {file.type}
</li>
))}
</ul>
<button className="button" onClick={handleUploadClick}>Upload</button>
</label>
</div>
</div>
);
}
Rożnica między frontendem z youtube a powyższym plikiem jest taka że w tym nie pobieram plików poprzez document.getElementById()
tylko z eventu.
Czy wiecie dla czego taki zapis powoduje błąd?