Как загрузить изображения в dropzone.Яш
У меня есть dropzone.экземпляр js на веб-странице со следующими параметрами:
autoProcessQueue:false
uploadMultiple:true
parallelUploads:20
maxFiles:20
он программно создается, так как является частью более крупной формы. Я настроил его на обработку очереди при отправке формы.
цель состоит в том, чтобы мои пользователи могли использовать dropzone для управления изображениями для элемента, поэтому, когда я загружаю представление "редактировать / обновлять" для элемента, я хотел бы предварительно загрузить dropzone с изображениями, которые ранее были загружены для этого пункт. Есть ли хороший способ реализовать это, чтобы уже существующие элементы не загружались повторно при отправке изменений в список изображений?
2 ответов
правильный способ сделать это, чтобы использовать .испустите метод, предоставленный on dropzone js, чтобы добавить файл и миниатюру для предварительной загрузки изображений с сервера. См. пример кода ниже. Взято из https://github.com/enyo/dropzone/wiki/FAQ#how-to-show-files-already-stored-on-server
// Create the mock file:
var mockFile = { name: "Filename", size: 12345 };
// Call the default addedfile event handler
myDropzone.emit("addedfile", mockFile);
// And optionally show the thumbnail of the file:
myDropzone.emit("thumbnail", mockFile, "/image/url");
.метод emit из dropzone запустит функцию init, и если у вас есть обратный вызов события addedfile, написанный для него. например, я использую addedfile event add remove button, а также прикрепленное удаление функциональность изображения.
Dropzone настолько сильный и удивительный, что вы можете сделать что-нибудь на нем .
Действия -- >
1) Прежде всего вам нужно будет создать скрипт на стороне сервера, который будет
получите все имена файлов и их размер и отправьте его как ответ json.
PHP код :
foreach($myitemfiles as $file){ //get an array which has the names of all the files and loop through it
$obj['name'] = $file; //get the filename in array
$obj['size'] = filesize("uploadsfolder/".$file); //get the flesize in array
$result[] = $obj; // copy it to another array
}
header('Content-Type: application/json');
echo json_encode($result); // now you have a json response which you can use in client side
2) Теперь вы можете использовать ответ для отображения загруженных файлов.Напишите приведенный ниже код внутри функции init dropzone
Код Javascript :
init: function() {
var thisDropzone = this;
$.getJSON('get_item_images.php', function(data) { // get the json response
$.each(data, function(key,value){ //loop through it
var mockFile = { name: value.name, size: value.size }; // here we get the file name and size as response
thisDropzone.options.addedfile.call(thisDropzone, mockFile);
thisDropzone.options.thumbnail.call(thisDropzone, mockFile, "uploadsfolder/"+value.name);//uploadsfolder is the folder where you have all those uploaded files
});
});
}
Примечание : не берите весь путь url файла в filename просто возьмите само имя файла, вот и все .
это работает