Wysłanie pliku w formularzu

0

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?

0

Ok.
Błąd był jednak po stronie serwera.

server.use('/upload', fileUpload({
    useTempFiles : true,
    tempFileDir : '/tmp/'
}))

server.post('/upload',
    fileUpload({ createParentPath: true }),
    (req, res) => {
        ...
    }

Zgłupiał po tym jak dwa razy wywołałem to samo middleware.
Gdy usunąłem server.use na górze wszystko zaczęło działać poprawnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1