Wysyłanie plików w JSON

0

Cześć,
czy jest taka możliwość by POSTem wysłać json, który zabiera plik czy musi do być formData?
Chodzi mi o wysłanie takiego body np:
files: {
"file": tutaj plik do wysłania,
"fileName": "image1",
"extension": "png"
}

1

jeśli nie będzie duży możesz zamienić go na base64 i wtedy go wrzucić do jsona

1

Tak jak @mr_jaro napisał - JSON to format tekstowy i nie przechowuje danych binarnych - jak chcesz nim przesłać plik to musisz go przekonwetować do odpowiedniego formatu, przykład:

<form action="#" id="upload">
  <input type="file">
  <input type="submit" value="Upload">
</form>
const toBase64 = file => new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = ({target}) => resolve(target.result);
    reader.onerror = error => reject(error);
});

document.getElementById("upload").addEventListener("submit", async (e) => {
  e.preventDefault();

  const file = e.target.children[0].files[0];
  const base64 = await toBase64(file)
  
  const nameChunks = file.name.split('.')
  
  const json = {
    name: nameChunks.slice(0, -1).join('.'),
    extension: nameChunks.slice(-1)[0],
    file: base64
  }
  
  console.log(json)
  
  // Send data...
});

Demo: CodePen

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