Posso usar o seguinte código jQuery para executar o upload de arquivo usando o método POST de uma solicitação ajax?
$.ajax({
type: "POST",
timeout: 50000,
url: url,
data: dataString,
success: function (data) {
alert('success');
return false;
}
});
Se for possível, preciso preencher uma data
peça? É o caminho correto? Eu apenas POSTAR o arquivo para o lado do servidor.
Tenho pesquisado no Google, mas o que encontrei foi um plug-in, enquanto no meu plano não quero usá-lo. Pelo menos por enquanto.
javascript
jquery
ajax
post
file-upload
Willy
fonte
fonte
Respostas:
O upload de arquivo
nãoé possível através do AJAX.Você pode fazer upload de arquivo, sem atualizar a página usando
IFrame
.Você pode conferir mais detalhes aqui .
ATUALIZAR
Com o XHR2, o upload de arquivos através do AJAX é suportado. Por exemplo, através do
FormData
objeto, mas infelizmente não é suportado por todos os navegadores antigos /.FormData
o suporte começa nas seguintes versões dos navegadores de desktop.Para mais detalhes, consulte o link MDN .
fonte
enctype
como"form/multipart"
!O Iframes não é mais necessário para fazer upload de arquivos através do ajax. Eu fiz recentemente isso sozinho. Confira estas páginas:
Usando uploads de arquivos HTML5 com AJAX e jQuery
http://dev.w3.org/2006/webapi/FileAPI/#FileReader-interface
Atualizou a resposta e a limpou. Use a função getSize para verificar o tamanho ou use a função getType para verificar os tipos. Adicionado progressbar html e código css.
Como usar a classe Upload
Código html Progressbar
Código CSS Progressbar
fonte
writer(catchFile)
. O que éwriter()
?O arquivo Ajax de publicação e upload é possível. Estou usando a
jQuery $.ajax
função para carregar meus arquivos. Tentei usar o objeto XHR, mas não consegui obter resultados no lado do servidor com o PHP.Como você pode ver, você deve criar um objeto FormData, vazio ou de (serializado? -
$('#yourForm').serialize())
formulário existente e, em seguida, anexar o arquivo de entrada.Aqui estão mais informações: - Como fazer upload de um arquivo usando jQuery.ajax e FormData - Como fazer upload de arquivos via jQuery, o objeto FormData é fornecido e nenhum nome de arquivo, solicitação GET
Para o processo PHP, você pode usar algo como isto:
fonte
formData.append('file', $('#file')[0].files[0]);
retornaundefined
econsole.log(formData)
não tem nada, exceto_proto_
var formData = new FormData(); formData.append('file', document.getElementById('file').files[0]); $.ajax({ url : $("form[name='uploadPhoto']").attr("action"), type : 'POST', data : formData, processData: false, // tell jQuery not to process the data contentType: false, // tell jQuery not to set contentType success : function(data) { console.log(data); alert(data); } });
Formulário de Upload Simples
fonte
Estou muito atrasado para isso, mas estava procurando uma solução de upload de imagens baseada em ajax e a resposta que procurava estava meio dispersa por todo este post. A solução em que decidi envolvia o objeto FormData. Montei uma forma básica do código que montei. Você pode ver que ele demonstra como adicionar um campo personalizado ao formulário com fd.append () e também como manipular dados de resposta quando a solicitação ajax é concluída.
Carregar html:
Caso você esteja trabalhando com o php, aqui está uma maneira de lidar com o upload, que inclui o uso dos dois campos personalizados demonstrados no html acima.
Upload.php
fonte
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https,
Por isso é tão sir i copiar e colar o código como estáfile://
, em vez de usar um servidor da Web? Como um aparte, não é uma prática recomendada simplesmente copiar e colar código às cegas sem primeiro entendê-lo. Eu recomendaria que você seguisse o código linha por linha para entender o que está acontecendo antes de colocar o código em uso.Um upload de AJAX é realmente possível com
XMLHttpRequest()
. Não são necessários iframes. O progresso do upload pode ser mostrado.Para obter detalhes, consulte: Responda https://stackoverflow.com/a/4943774/873282 para questionar o jQuery Upload Progress e o upload de arquivo AJAX .
fonte
Aqui está como eu consegui esse trabalho:
HTML
JS
PHP
fonte
$('#file')[0].files[0]
que é algum tipo de JS estranhos resolver sem a necessidade de uma adequada<form>
Caso você queira fazer assim:
do que
https://github.com/lgersman/jquery.orangevolt-ampere/blob/master/src/jquery.upload.js
pode ser sua solução.
fonte
Mais detalhes no meu blog: http://blog.manki.in/2011/08/ajax-fie-upload.html .
fonte
editar: anote o tipo de conteúdo e processe os dados Você pode simplesmente usá-lo para fazer upload de arquivos via Ajax ...... a entrada de envio não pode estar fora do elemento do formulário :)
fonte
Atualização de 2019:
html
js
views.py
fonte
Use FormData. Funciona muito bem :-) ...
fonte
Eu implementei uma seleção de vários arquivos com visualização instantânea e upload após remover arquivos indesejados da visualização via ajax.
Documentação detalhada pode ser encontrada aqui: http://anasthecoder.blogspot.ae/2014/12/multi-file-select-preview-without.html
Demonstração: http://jsfiddle.net/anas/6v8Kz/7/embedded/result/
jsFiddle: http://jsfiddle.net/anas/6v8Kz/7/
Javascript:
fonte
Eu lidei com isso em um código simples. Você pode baixar uma demonstração de trabalho aqui
Para o seu caso, isso é muito possível. Vou mostrar passo a passo como você pode enviar um arquivo para o servidor usando o AJAX jquery.
Primeiro, vamos criar um arquivo HTML para adicionar o seguinte elemento de arquivo de formulário, como mostrado abaixo.
Em segundo lugar, crie um arquivo jquery.js e adicione o seguinte código para lidar com o envio de arquivos ao servidor
Lá está você pronto. Veja mais
fonte
Usar o FormData é o caminho a seguir, conforme indicado por muitas respostas. aqui está um pouco de código que funciona muito bem para esse fim. Também concordo com o comentário de aninhar blocos ajax para concluir circunstâncias complexas. Ao incluir e.PreventDefault (); na minha experiência, torna o código mais compatível com vários navegadores.
fonte
Usando js puro, é mais fácil
Aqui está um trecho mais desenvolvido com tratamento de erros e envio de json adicional
Mostrar snippet de código
fonte
Sim, você pode, basta usar javascript para obter o arquivo, certificando-se de ler o arquivo como um URL de dados. Analise as coisas antes da base64 para obter os dados codificados da base 64 e, se você estiver usando php ou qualquer outro idioma de back-end, poderá decodificar os dados da base 64 e salvar em um arquivo como mostrado abaixo
É claro que você provavelmente desejará fazer alguma validação, como verificar com qual tipo de arquivo você está lidando e coisas assim, mas essa é a ideia.
fonte
fonte
Você pode usar o método ajaxSubmit da seguinte forma :) quando você seleciona um arquivo que precisa ser carregado no servidor, o formulário deve ser enviado ao servidor :)
fonte
para fazer upload de um arquivo que é enviado pelo usuário como parte do formulário usando jquery, siga o código abaixo:
Em seguida, envie o objeto de dados do formulário para o servidor.
Também podemos anexar um Arquivo ou Blob diretamente ao objeto FormData.
fonte
Se você deseja fazer upload de arquivo usando AJAX, aqui está o código que você pode usar para fazer upload de arquivos.
Aqui está o HTML para carregar o arquivo
fonte
Para obter todas as entradas do seu formulário, incluindo o type = "file", você precisa usar o objeto FormData . você poderá ver o conteúdo do formData no depurador -> rede -> cabeçalhos depois de enviar o formulário.
fonte
fonte
Aqui estava uma idéia que eu estava pensando:
Tenha um formulário no qual você move o elemento INPUT: File para.
O resultado será publicado no quadro e você poderá enviar os dados buscados até um nível para a tag da imagem desejada com algo como:
e a página é carregada.
Acredito que funcione para mim e, dependendo de você, você poderá fazer algo como:
fonte