Программирование, СМС, Webasyst, Drupal, PHP, личная эффективность

 
 

Uploadify — загрузка файла без перезагрузки страницы.

Июнь 29, 2010   |   Категории: jQuery плагины, веб мастерим

В последнее время стало популярным взаимодействия с сервером без перезагрузки страницы. Это удобно тем, что во первых изменяется только часть веб страницы, что довольно сильно может экономить время загрузки страницы и трафик.

В этой записи я покажу как можно загружать файлы без перезагрузки странице. Без данного функционала не обойтись например, в веб приложениях где очень не желательна перезагрузка. Например на сайтах где все данные получаются с помощью ajax. Не очень красиво будет если все получаем без перезагрузи, а загружаем файлы с перезагрузкой страницы. Эту проблему нам поможет решить отличный jquery плагин — Uploadify.

Пользоваться этим плагином довольно легко. Для подключение к веб страницы используем следующей код -

<script type="text/javascript" src="/Window1/uploadify/swfobject.js"></script>
     <script type="text/javascript" src="/Window1/uploadify/jquery.uploadify.v2.1.0.min.js"></script>

следующим шагом подключаем такой код -

<script type="text/javascript">
$(document).ready(function() {
    $("#uploadify").uploadify({
        'uploader'       : '/example/jquery.uploadify-v2.0.3/uploadify.swf',
        'script'         : '/example/jquery.uploadify-v2.0.3/uploadify.php',
                        'folder'         : '/constructor/uploads',
        'cancelImg'      : 'cancel.png',
        'folder'         : 'uploads',
        'queueID'        : 'fileQueue',
        'auto'           : true,
        'multi'          : false,
        'onComplete'   : function(event,queueID,fileObj,response,data) {
                          $('#file').html(response);
                         },
        'fileDesc'   : 'jpg; gif; png; jpeg;',
        'fileExt'   : '*.jpg;*.gif;*.png;*.jpeg;',
        'width' : '542',
        'height' : '29'
    });
});
</script>

опишу тут главные параметры. -
uploader – относительный путь к файлу uploadify.swf. Чтобы был абсолютный путь поставьте вначале пути – /. В моем примере абсолютный путь от корня сайта.

Script – относительный путь к файлу сервера который обрабатывает файл который закачан на сервер.

CheckScript – путь к файлу который проверяет если ли такой файл на сервере.

ScriptData – Объект в котором содержится пара — имя/значение. Тут можно послать дополнительные значения в серверный скрипт. Отсылать нужно в таком виде – {‘имя’: ‘значение’}

fileDataName — имя массива загружаемого файла на сервере. В нашем случае это будет в файле /example/jquery.uploadify-v2.0.3/uploadify.php. Так как по умолчанию значение «Filedata» и мы не меняли на другое поэтому у нас в скрипте будет массив – $_FILES['Filedata'].

Method – Метод передачи данных в серверный скрипт. Возможные значения ‘GET’ или ‘POST’. В нашем случае стоит ‘POST’ так как мы этот параметр явно не прописывали.

ScriptAccess – режим доступа скриптам в флеш файл. При локальном тестирование можно поставить ‘always’. По умолчанию стоит – ’sameDomain’.

Folder – папка в которую мы хотим сохранять файлы на сервере. В php cкрипте доступна через переменную – $_REQUEST['folder'].

QueueID – id элемента который нужно использовать в качестве очереди файла. По умолчанию создается автоматически ниже кнопки ‘Browse’ .

QueueSizeLimit – Лимит количества элементов которые будут в очереди за один раз. По умолчанию 999.

multi – для множественной загрузки установите «true» .

Auto – установите «true» если вы хотите чтобы файл загружался сразу как только вы его выберите.

FileDesc – текст который появится внизу когда вы нажмете кнопку для выбора файла на локальном компьютере. В нашем случае значения ‘jpg; gif; png; jpeg;’ для того чтобы видеть какие типы файлы можно выбрать.

FileExt – список расширений файлов которые можно будет загружать. В моем случае такой ‘*.jpg;*.gif;*.png;*.jpeg;’ . Звездочкой обозначаем любой текст, а после точки расширение файла.

SizeLimit — лимит в байтах для каждой загрузки на сервер.

SimUploadLimit — количество разрешенных одновременных загрузок на сервер. По умолчанию 1

buttonText – текст который может появится на кнопке, что по умолчанию для выбора файла. По умолчанию ‘BROWSE’.

ButtonImg – если не устраивает кнопка, что по умолчанию. Можно тут прописать путь до изображения которую вы хотите использовать как кнопку для выбора файла.

HideButton — если вы хотите спрятать кнопку изображения установите в true

width – ширина кнопки изображения. По умолчанию 30

height — высота изображения кнопки.

cancelImg – путь к кнопки для отмены. По умолчанию ‘cancel.png’

onOpen — функция которая выполняется каждый раз как файл открыт для загрузки flash файлом. Например – ‘onOpen’ : function(event,queueID,fileObj) { }

onComplete – функция выполняется каждый раз как определенный файл загружен. В нашем случае мы вызываем анонимную функцию:

 'onComplete'   : function(event,queueID,fileObj,response,data) { alert(response) }.

описание к важным аргументам :
queueID – уникальный идентификатор файла который загружен
fileObj – обьект который содержит детальные данные о файле который загружен:
name – имя файла
filePath – путь на сервере к загруженному файлу
size – размер в байтах
creationDate – дата создания файла
modificationDate – дата модыфикации файла
type – расширение файла
response – данные которые возвращяет сервер.

OnAllComplete — функция которая выполняется когда все файлы загружены.

Полную документацию вы можете найти тут — http://www.uploadify.com/documentation/.
Последнюю версию плагина можно скачать тут – http://www.uploadify.com/download/.



 
 

12 Комментариев

Andrew  on Август 9th, 2010

А Вы проверяли на кроссбраузерность?

Valik  on Август 10th, 2010

Да проверял. Во всех главных браузерах я проверял – работает.

Макс  on Август 14th, 2010

как самому определить новое имя файла?

Макс  on Август 14th, 2010

Так понимаю что эта строка должна менять но как ее использовать
$(’#uploadify’).uploadifySettings(’scriptData’, {’name’ : some.val()});

Стас  on Ноябрь 26th, 2010

Я запарился, а как ограничить колличество загружаемых файлов? Чтобы к примеру больше трех нельзя было загрузть???
Смотрю у них это не предусмотрено, не подскажете как можно проаерить?

Keeper  on Декабрь 3rd, 2010

А QueueSizeLimit вам для чего? )

sdaasda  on Декабрь 18th, 2010

Ху*вый, через пи*ду сделаный плагин. Документация написана полудурками, опять же через жопу, приводиться по одному примеру, а более подробные примеры(с возможностями, которые используются даже в исходном коде плагина) не приведены. Да самое главное, нельзя генерить свои сообщения об ошибках, механизм проверки перед загрузкой сделан через жопу и не поддается перемодернизации. На проверку уходит тока имя файла, на*уй оно надо, если я хочу размер проверить….

Valik  on Декабрь 21st, 2010

To->sdaasda
Любые проверки можно делать на стороне php скрипта включая и размер в этом плагине поэтому я не могу согласится с вашими доводами. К тому же нельзя доверять проверкам с клиенской стороне нужно всегда их делать на стороне php cкрипта

sdaasda  on Декабрь 23rd, 2010

Так на стороне скрипта можно, но только во время загрузки файла, то есть если файл 100 метров, а максимальный размер 90, то будешь ждать, пока пройдет индикатор и пердастся файл, что у Вас ошибка размера, а если гиг?????
Так чтоб полуить уведомление об ошибке надо ждать 10 минут????
Ну, я с этой проблеммой уже разобрался сделал часть на стороне клиента и на сервере еще…
У меня счас другое, ставишь sameDomain always и ни одна ф-ция не работает, выдает
Error calling method on NPObject….
Опять же все через большую залупу сделано…

Valik  on Декабрь 23rd, 2010

ну вот я в ихней документации нашел, что можно ставить проверку на размер – http://www.uploadify.com/documentation/options/sizelimit/

Разработчики хорошо оттестировали и если не бета версия, тогда глюков не должно быть проверял сам.

И к тому же скрипт бесплатный наобор нужно говорить спасибо, что дали такой функционал, а что не устраивает можно самому переделать или доделать. В любом случае писать такой скрипт с нуля было бы не быстрым занятием.

sdaasda  on Декабрь 23rd, 2010

Молодец, а так, чтобы проверить, что если это картинка, то макс. размер три метра, а если видео, то к примеру 100 метров) и сразу выдавать ошибку не дожидаясь ответа от сервера(так же как и стандартная на size выдается)
Я эту проблемму решил, нашел способ

Yrbiz  on Май 16th, 2011

Можно ли сделать две формы на странице и каждой указать свои параметры? и еще как создать переменную с именами всех загруженных файлов через запятую?

Оставить комментарий




 

 
 

На сайте freesoftspace.com можно найти много полезных бесплатных программ для веб разработки

 
 


38201110912430120x600.gif
Каталог блогов
2009-2012   При копировании материала активная ссылка на web-grand.ru обязательна