Upload com Javascript
Segue neste tutorial como fazer upload de arquivos para uma página server-side usando apenas jQuery e objeto javascript, sem criar iframe ou semelhante, usando o recurso xhr do Ajax, possibilitando o uso de barra de progresso e permitir múltiplos envios em uma única página.
Isto é semelhante com o upload de arquivos do Gmail.
Segue abaixo o código:
/* Requer jQuery */
/* Modo de usar:
* UploadData( $('input[type="file"]') );
*/
function UploadData(obj){
var FormDataFilesUpload = new FormData(); // Cria formulário baseado em objeto JavaScript.
/* Pega todos os arquivos do objeto passado pela função */
$.each( $(obj)[0].files , function (index,file) { FormDataFilesUpload.append('data_file', file); }); // Anexa todos os arquivos neste formulário.
$(obj).val(''); // Limpa os objetos carregados no elemento físico da página.
$.ajax({ // Inicia o ajax para transmitir os arquivos.
url: 'upload.php?elementoGet=xptoValor',
data: FormDataFilesUpload,
cache: false,
contentType: false,
processData: false,
type: 'POST',
beforeSend: function(){
/* Área para inserir código para executar antes de iniciar a requisição ajax. Ex.: Bloqueio de tela durante o upload. */
},
xhr: function(){
/* Função xhr para tratamento de download e upload do formulário Ajax */
var xhr = new window.XMLHttpRequest();
/* Registro do evento para progresso de upload */
xhr.upload.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
/* Pode fazer uso da variável abaixo para exibir o progresso */
$('.progresso').css({width:percentComplete*100 +'%'});
}
}, false);
/* Registro para evento de download */
xhr.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
/* Progresso de download */
$('.progresso').css({width:percentComplete*100 +'%'});
}
}, false);
return xhr;
},
success: function (data) {
/* Ao finalizar o upload com sucesso */
$('.progresso').css({width:'0%'});
},
fail: function (data) {
/* Ao finalizar o upload com erro */
$('.progresso').css({width:'0%'});
}
}); /* ajax */
}
Nenhum comentário
Deixe seu comentário abaixo e curta Tutorial TI no facebook!