Как предварительно загрузить существующие файлы и отобразить их в таблице загрузки blueimp?
Я использую jquery-ui версию загрузки Blueimp, и мне нравится, как я могу форматировать таблицу и отображать только что загруженные файлы. Но я бы хотел использовать его как файловый менеджер, поэтому я хочу предварительно загрузить существующие файлы и отобразить, как будто они были просто загружены. Как я могу это сделать? Образец ссылки на то, где кто-то еще обратился к этому, будет достаточным. BTW, я загружаю несколько разных типов файлов, а не только изображения.
Спасибо!
Ответы
Ответ 1
У меня также была та же проблема. Это не волшебство, как это работает. Я рекомендую изучить файл UploadHandler.php. Затем вы сможете изменить этот плагин в соответствии с вашими потребностями.
Код выше во втором сообщении - это просто ajax-вызов загрузчика script (по умолчанию index.php в папке server/php/). Для метода вызова установлено значение "get" по умолчанию в объекте $.ajax.
Откройте файл UploadHandler.php и перейдите к методу класса "initialize (...)". Вы увидите, как выполняется вызов с "get". UploadHandler вызывает метод класса this- > get (.:.) Для подготовки и отправки списка существующих файлов. Если вы используете другой каталог загрузки, вам необходимо передать параметр в UploadHänder. Просто измените свойство url в объекте $.ajax, например:
url: $('#fileupload').fileupload('option', 'url')+'?otherDir='+myDir,
тогда вы должны инициализировать свойство option UploadHandler перед созданием нового объекта UploadHandler следующим образом:
$otherDir = trim($_REQUEST['otherDir']);
$otherDir_url = [anyURL] .'/'.$otherDir;//so that the files can be downloaded by clicking on the link
$options = array(
'upload_dir'=> $otherDir,
'upload_url'=> $otherDir_url,
);
$upload_handler = new UploadHandler($options);
Ответ 2
Или без вызова ajax:
-
Подготовить массив, содержащий сведения о существующих файлах, например:
var files = [
{
"name":"fileName.jpg",
"size":775702,
"type":"image/jpeg",
"url":"http://mydomain.com/files/fileName.jpg",
"deleteUrl":"http://mydomain.com/files/fileName.jpg",
"deleteType":"DELETE"
},
{
"name":"file2.jpg",
"size":68222,
"type":"image/jpeg",
"url":"http://mydomain.com/files/file2.jpg",
"deleteUrl":"http://mydomain.com/files/file2.jpg",
"deleteType":"DELETE"
}
];
-
Вызов завершенного обратного вызова
var $form = $('#fileupload');
// Init fileuploader if not initialized
// $form.fileupload();
$form.fileupload('option', 'done').call($form, $.Event('done'), {result: {files: files}});
Ответ 3
Нашел код в главном файле js... Было неясно, как это работает. Получил его работу просто отлично.
// Load existing files:
$.ajax({
url: $('#fileupload').fileupload('option', 'url'),
dataType: 'json',
context: $('#fileupload')[0]
}).done(function (result) {
$(this).fileupload('option', 'done').call(this, null, {result: result});
});
Ответ 4
Если кто-то из вас, глядя на это, делает это в .NET, найдите это: (для меня это в application.js
Для довольно недавней версии существует функция
// Load existing files:
$.getJSON($('#fileupload form').prop('action'), function(files) {
files = somethingelse;
var fu = $('#fileupload').data('fileupload');
fu._adjustMaxNumberOfFiles(-files.length);
fu._renderDownload(files)
.appendTo($('#fileupload .files'))
.fadeIn(function() {
// Fix for IE7 and lower:
$(this).show();
});
});
Внутри application.js
Я делаю это для .NET, хотя, и на самом деле это нужно.
Затем установите для себя что-то либо ваши файлы, либо "" в зависимости от того, что вы хотите показать. Если вы удалите файл строки = somethingelse, он предварительно загрузит все файлы из папки.