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"
}
0
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