Мультизагрузка файлов с использованием Flash Uploader и PHP и сохранение в базе данных MySQL - PullRequest
0 голосов
/ 24 марта 2012

Я хочу разработать бэкэнд-администраторское решение для сохранения изображений для поста с помощью мультизагрузочного флеш-загрузчика. Я имею в виду такого рода загрузчик, где, когда вы нажимаете на кнопку «Обзор», а затем в открывшемся диалоговом окне вы можете выбрать несколько файлов, используя CTRL + ЛЕВЫЙ ЩЕЛЧОК МЫШИ).

Я хотел бы сохранить каждое новое изображение в базе данных. Под сохранением я подразумеваю создание новой строки для каждого элемента (изображения) в моей таблице с именем images:

1.id (automatically increasing)
2.file_name
3.user_who_uploaded_that_book

Я также хотел бы ограничить количество файлов, которые пользователь может выложить (например, максимум 20 файлов) где-нибудь в файле конфигурации.

Ответы [ 2 ]

2 голосов
/ 24 марта 2012

Лично я фанат Plupload , который включает хороший набор примеров того, как настроить его для загрузки нескольких файлов.Он также включает в себя скрипт upload.php, например, для настройки бэкенда.

HTML4 не поддерживает множественный выбор файлов, поэтому для этого вам нужно использовать либо HTML5, либо расширение (например, flash или silverlight).Plupload поддерживает все вышеперечисленное, поэтому вам придется немного сэкономить.

0 голосов
/ 25 марта 2012

Я думаю, у вас есть 2 основных вопроса:

  1. Как выбрать локальные файлы для загрузки через флэш-память?
  2. Как отправить несколько файлов на сервер как POST?

Для # 1 Вам необходимо использовать flash.net.FileReference .

Для # 2 Во флеш-памяти нет встроенного загрузчика 'Multipart', который, я уверен, вам нужен. Лучшее, что я нашел, - это гениальный разработчик по имени Евгений: http://blog.inspirit.ru/?p=198. Это прекрасно работает, хотя лично у меня были некоторые проблемы с обработчиком onComplete в IE8 и IE9. Я уверен, что это вина IE, а не Юджина. Я работал над этим, слушая событие HTTPStatusEvent, вот так:

var ml:MultipartURLLoader = new MultipartURLLoader();           
ml.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatusEvent);
ml.addVariable('Content-Type', "image/png");
ml.addFile(pngStream, filename, "file", "image/png");
ml.load('http://...');
function onHTTPStatusEvent( event: HTTPStatusEvent ){           
    if(stat == 0 || (stat >= 200 && stat < 205)){
        //upload success
    }else{
        //some kinda error
    }
}

(Это должно работать с несколькими addFiles (_);)

Я также слушаю стандартные события:

ml.addEventListener(Event.COMPLETE, uploadComplete);
ml.addEventListener(ProgressEvent.PROGRESS, uploadProgress);

Но не удалось заставить PROGRESS работать вообще, и COMPLETE не работает на IE ... Кто-нибудь знает какие-либо альтернативы, которые работают на IE? Код Юджина сейчас работает для меня, но я не думаю, что смогу добавить индикатор загрузки "как есть ..." как есть ... что было бы здорово.

...