Как предварительно загрузить существующие файлы и отобразить их в таблице загрузки 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, он предварительно загрузит все файлы из папки.