РЕДАКТИРОВАТЬ (октябрь 2019 г.):
Спустя 6 лет загрузка файлов jQuery все еще сводит людей с ума. Если в ответах вы не находите утешения, попробуйте поискать в NPM современную альтернативу. Обещаю, это не стоит хлопот.Я рекомендовал Uploadify в предыдущей редакции, но, как заметил один из комментаторов, они больше не предлагают бесплатную версию. В любом случае, Uploadify был таким 2013 годом.
РЕДАКТИРОВАТЬ:
Похоже, трафик все еще идет, поэтому я объясню, чем я закончил. В конце концов, я заставил плагин работать, следуя руководству в принятом ответе. Однако загрузка файлов jQuery - это настоящая проблема, и если вы ищете более простой плагин для загрузки файлов, я настоятельно рекомендую Uploadify . Как указано в ответе, это бесплатно только для некоммерческого использования.Задний план
Я пытаюсь использовать загрузку файлов jQuery blueimp, чтобы пользователи могли загружать файлы. Из коробки работает отлично , следуя инструкции по установке. Но чтобы использовать его практически на своем веб-сайте, я хочу иметь возможность делать несколько вещей:
- Включить загрузчик на любую из моих существующих страниц
- Измените каталог для загруженных файлов
Все файлы для плагина находятся в папке под корнем.
Я пробовал...
- Перемещение демонстрационной страницы в корень и обновление путей для необходимых скриптов
- Измените параметры «upload_dir» и «upload_url» в файле UploadHandler.php, как предлагается здесь .
- Изменение URL-адреса во второй строке демонстрационного javascript
Во всех случаях, предварительный просмотр показывает, а бар работает прогресс, но файлы не загружать, и я получаю эту ошибку в консоли: Uncaught TypeError: Cannot read property 'files' of undefined
. Я не понимаю, как работают все части плагина, что затрудняет отладку.
Код
Javascript на демонстрационной странице:
$(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');
});
Меня удивляет отсутствие документации; кажется, что это должно быть просто изменить. Буду признателен, если кто-нибудь сможет объяснить, как это сделать.
Ответы:
Несколько дней назад я искал похожую функциональность и наткнулся на хороший учебник в учебном журнале. Вот рабочий пример. Полное руководство можно найти здесь .
Простая форма для диалога загрузки файла:
А вот код jQuery для загрузки файлов:
А вот пример кода PHP для обработки данных:
Приведенный выше код можно добавить в любую существующую форму. Эта программа автоматически загружает изображения после их добавления. Эту функцию можно изменить, и вы можете отправить изображение, пока вы отправляете существующую форму.
Обновил мой ответ фактическим кодом. Все кредиты оригинальному автору кода.
Источник: http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/
источник
if($_POST)
оператор. POST должен быть пустым, в котором отправляется содержимое файла$_FILES['upfile']['tmp_name']
. Надеюсь, это кому-то сэкономит время.Я только что потратил 2 часа на борьбу с jQuery Upload, но сдался из-за большого количества зависимостей (у меня было 13 файлов JS, чтобы получить все навороты).
Я немного поискал и наткнулся на интересный проект Dropzone.js , у которого нет никаких зависимостей.
Автор также создал демонстрацию начальной загрузки, вдохновленную плагином jQuery File Upload.
Я надеюсь, что это сэкономит время кому-то еще.
источник
Я тоже боролся с этим, но все заработало, как только я понял, как работают пути в UploadHandler.php: upload_dir и upload_url - это единственные настройки, на которые нужно смотреть, чтобы заставить его работать. Также проверьте журналы ошибок сервера для получения отладочной информации.
источник
Оцените загрузчик изображений перетаскиванием и предварительным просмотром изображений с помощью плагина jquery-дроппера.
HTML
JS
CSS
Демо Jsfiddle
источник
Это хороший Angular плагин для загрузки файлов, и он бесплатный!
угловая загрузка файла
источник
Некоторое время я боролся с этим плагином на Rails, а затем кто-то сделал его устаревшим, сделав весь созданный мной код устаревшим.
Хотя похоже, что вы не используете это в Rails, однако, если кто-то его использует, проверьте этот гем . Источник здесь -> jQueryFileUpload Rails .
Обновить:
Чтобы удовлетворить комментатора, я обновил свой ответ. По сути, « используйте этот драгоценный камень , вот исходный код ». Если он исчезнет, сделайте это долго.
источник
Привет, попробуйте ссылку ниже, это очень просто. Я застрял на долгое время, и это решило мою проблему за несколько минут. http://simpleupload.michaelcbrook.com/#examples
источник
Droply.js идеально подходит для этого. Это просто и поставляется с предустановленным демо-сайтом, который работает «из коробки».
источник
Вы можете использовать uploadify, это лучший плагин jquery для работы с несколькими загрузками, который я использовал.
Реализация проста, поддержка браузером на высоте.
источник
Для подключаемого модуля пользовательского интерфейса со страницей jsp и Spring MVC ..
Образец html . Должен находиться в элементе формы с атрибутом id для fileupload
Примеры обработчиков запросов на загрузку и удаление
Пример класса для генерации требуемого ответа json
См. Https://pitipata.blogspot.co.ke/2017/01/using-jquery-file-upload-ui.html.
источник