Contamos con una API (Spring Boot) para la carga de archivos. Si el archivo existe, devuelve 409.
Pero el cliente js no lee esta respuesta y falla con el error "net::ERR_CONNECTION_ABORTED".
Desde el volcado de wireshark, veo que el backend envía la respuesta y luego cierra la conexión:
Creo que el problema es que el cliente js no lee la respuesta tan pronto como está disponible. Sin embargo, Postman puede leer la respuesta correctamente.
¿Es posible implementar el comportamiento de Postman en javascript? Intenté leer el flujo de respuesta con Fetch API, pero no tuve suerte.
Ejemplo de código de cliente:
function uploadFile() { try { console.log("Start file upload"); const selectedFiles = document.getElementById('input').files; if (selectedFiles.length == 0) { alert("No file selected"); return; } const file = selectedFiles[0]; return fetch("http://localhost:9091/api/v1/storage/upload?fileId=/upload-test/test.mp4", { method: 'PUT', body: file, headers: { 'Content-Type': 'application/octet-stream' }, }) .then(response => { console.log("Processing response"); const reader = response.body.pipeThrough(new TextDecoderStream()).getReader(); return pump(); function pump() { return reader.read().then(({ value, done }) => { if (done) { console.log("Finished stream reading"); return; } console.log(value); return pump(); }); } }) .catch((err) => console.error("error:", err)); } catch (error) { console.log(error); }}