Suponha que você tenha um elemento HTML representando um botão que permite aos usuários selecionar um arquivo. Ao clicar no botão e escolher um arquivo, seu nome é armazenado em document.getElementById("arquivo-imagem").value. Se o servidor suportar solicitações POST de várias partes na URL "/upload/image", como você envia o arquivo para esse endpoint? Além disso, como você monitora o progresso do upload?
Você pode usar a API fetch com manipulação opcional de await-try-catch:
let photo = document.getElementById("image-file").files[0]; let formData = new FormData(); formData.append("photo", photo); fetch('/upload/image', {method: "POST", body: formData});
Este exemplo também inclui dados do usuário enviados como JSON :
async function SavePhoto(inp) { let user = { name: 'john', age: 34 }; let formData = new FormData(); let photo = inp.files[0]; formData.append("photo", photo); formData.append("user", JSON.stringify(user)); const ctrl = new AbortController(); // for timeout setTimeout(() => ctrl.abort(), 5000); try { let r = await fetch('/upload/image', { method: "POST", body: formData, signal: ctrl.signal, }); console.log('HTTP response code:', r.status); } catch (e) { console.log('Huston we have problem...:', e); } }
Infelizmente, métodos como request.onprogress não são suportados no upload de arquivos HTML5 com fetch, mas você pode monitorar o progresso geral do upload ouvindo os eventos da rede:
let xhr = new XMLHttpRequest(); xhr.upload.addEventListener('progress', function(e) { if (e.lengthComputable) { let percentComplete = (e.loaded / e.total) * 100; console.log('Upload progress:', percentComplete '%'); } }); xhr.open('POST', '/upload/image'); xhr.send(formData);
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3