EDITAR (outubro de 2019):
6 anos depois, o jQuery File Upload claramente ainda está deixando as pessoas loucas. Se você encontrar pouco consolo nas respostas aqui, tente pesquisar no NPM para encontrar uma alternativa moderna. Não vale a pena o aborrecimento, eu prometo.Eu recomendei Uploadify na edição anterior, mas, como um comentarista apontou, eles não parecem mais oferecer uma versão gratuita. Uploadify foi tão 2013 de qualquer maneira.
EDITAR:
Isso ainda parece estar recebendo tráfego, então vou explicar o que acabei fazendo. Acabei fazendo o plugin funcionar seguindo o tutorial na resposta aceita. No entanto, jQuery File Upload é um verdadeiro aborrecimento e se você está procurando um plugin de upload de arquivo mais simples, eu recomendo o Uploadify . Como uma resposta apontada, é gratuito apenas para uso não comercial.fundo
Estou tentando usar o jQuery File Upload do blueimp para permitir que os usuários carreguem arquivos. Fora da caixa, ele funciona perfeitamente , seguindo as instruções de configuração. Mas para usá-lo de forma prática em meu site, quero poder fazer algumas coisas:
- Incluir o uploader em qualquer uma das minhas páginas existentes
- Altere o diretório dos arquivos carregados
Todos os arquivos do plugin estão localizados em uma pasta na raiz.
Eu tentei...
- Movendo a página de demonstração para a raiz e atualizando os caminhos para os scripts necessários
- Alterando as opções 'upload_dir' e 'upload_url' no arquivo UploadHandler.php conforme sugerido aqui .
- Alterar o URL na segunda linha do javascript de demonstração
Em todos os casos, os shows de visualização, ea barra de progresso é executado, mas os arquivos não conseguem carregar, e eu recebo este erro no console: Uncaught TypeError: Cannot read property 'files' of undefined
. Não entendo como funcionam todas as partes do plugin, o que está dificultando a depuração.
Código
O javascript na página de demonstração:
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = 'file_upload/server/php/UploadHandler.php',
uploadButton = $('<button/>')
.addClass('btn')
.prop('disabled', true)
.text('Processing...')
.on('click', function () {
var $this = $(this),
data = $this.data();
$this
.off('click')
.text('Abort')
.on('click', function () {
$this.remove();
data.abort();
});
data.submit().always(function () {
$this.remove();
});
});
$('#fileupload').fileupload({
url: url,
dataType: 'json',
autoUpload: false,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
maxFileSize: 5000000, // 5 MB
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
previewMaxWidth: 100,
previewMaxHeight: 100,
previewCrop: true
}).on('fileuploadadd', function (e, data) {
data.context = $('<div/>').appendTo('#files');
$.each(data.files, function (index, file) {
var node = $('<p/>')
.append($('<span/>').text(file.name));
if (!index) {
node
.append('<br>')
.append(uploadButton.clone(true).data(data));
}
node.appendTo(data.context);
});
}).on('fileuploadprocessalways', function (e, data) {
var index = data.index,
file = data.files[index],
node = $(data.context.children()[index]);
if (file.preview) {
node
.prepend('<br>')
.prepend(file.preview);
}
if (file.error) {
node
.append('<br>')
.append(file.error);
}
if (index + 1 === data.files.length) {
data.context.find('button')
.text('Upload')
.prop('disabled', !!data.files.error);
}
}).on('fileuploadprogressall', function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .bar').css(
'width',
progress + '%'
);
}).on('fileuploaddone', function (e, data) {
$.each(data.result.files, function (index, file) {
var link = $('<a>')
.attr('target', '_blank')
.prop('href', file.url);
$(data.context.children()[index])
.wrap(link);
});
}).on('fileuploadfail', function (e, data) {
$.each(data.result.files, function (index, file) {
var error = $('<span/>').text(file.error);
$(data.context.children()[index])
.append('<br>')
.append(error);
});
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
Estou surpreso com a falta de documentação; parece que deveria ser algo simples de mudar. Eu apreciaria se alguém pudesse explicar como fazer isso.
Respostas:
Eu estava procurando uma funcionalidade semelhante alguns dias atrás e me deparei com um bom tutorial sobre tutorialzine. Aqui está um exemplo prático. O tutorial completo pode ser encontrado aqui .
Forma simples para manter a caixa de diálogo de upload de arquivo:
E aqui está o código jQuery para fazer upload dos arquivos:
E aqui está o exemplo de código PHP para processar os dados:
O código acima pode ser adicionado a qualquer formulário existente. Este programa carrega automaticamente as imagens, assim que forem adicionadas. Esta funcionalidade pode ser alterada e você pode enviar a imagem, enquanto envia seu formulário existente.
Atualizei minha resposta com código real. Todos os créditos ao autor original do código.
Fonte: http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/
fonte
if($_POST)
instrução. O POST deve estar vazio quando o conteúdo do arquivo é enviado$_FILES['upfile']['tmp_name']
. Esperançosamente, isso poupa algum tempo.Acabei de passar 2 horas lutando com jQuery Upload, mas desisti por causa da quantidade de dependências (eu tinha 13 arquivos JS incluídos para obter todos os sinos e assobios).
Pesquisei um pouco mais e encontrei um projeto bacana chamado Dropzone.js , que não tem dependências.
O autor também criou uma demonstração de bootstrap que foi inspirada no plugin jQuery File Upload.
Espero que isso poupe mais alguém algum tempo.
fonte
Eu também tive dificuldades com isso, mas consegui fazer funcionar assim que descobri como os caminhos funcionam em UploadHandler.php: upload_dir e upload_url são as únicas configurações a serem observadas para fazê-lo funcionar. Verifique também os logs de erros do servidor para obter informações de depuração.
fonte
Confira o uploader de arrastar e soltar de imagens com visualização de imagem usando o plugin dropper jquery.
HTML
JS
CSS
Demo Jsfiddle
fonte
Este é um bom plugin do Angular para upload de arquivos, e é grátis!
upload de arquivo angular
fonte
Eu lutei com esse plugin por um tempo no Rails, e então alguém o tornou obsoleto, tornando todo o código que eu havia criado.
Embora pareça que você não está usando isso no Rails, se alguém estiver usando, verifique esta joia . A fonte está aqui -> jQueryFileUpload Rails .
Atualizar:
Para satisfazer o comentador, atualizei minha resposta. Essencialmente, " use esta gema , aqui está o código-fonte ". Se ela desaparecer, faça-o pelo caminho mais longo.
fonte
Olá, experimente o link abaixo, é muito fácil. Estou preso há muito tempo e isso resolve meu problema em poucos minutos. http://simpleupload.michaelcbrook.com/#examples
fonte
Droply.js é perfeito para isso. É simples e vem pré-embalado com um site de demonstração que funciona fora da caixa.
fonte
Você pode usar o uploadify, este é o melhor plugin multiupload jquery que eu usei.
A implementação é fácil, o suporte ao navegador é perfeito.
fonte
Para o plugin de IU, com página jsp e Spring MVC ..
Amostra de html . Precisa estar dentro de um elemento de formulário com um atributo id de fileupload
Gerenciadores de solicitação de upload e exclusão de amostra
Classe de amostra para gerar a resposta json necessária
Veja https://pitipata.blogspot.co.ke/2017/01/using-jquery-file-upload-ui.html
fonte