Каков наилучший способ загрузить несколько файлов за один запрос во Flash? - PullRequest
0 голосов
/ 24 марта 2011

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

Каков предписанный метод для выполнения указанной операции в AS3? (Я использую AIR, но сомневаюсь, что это что-то меняет).

ТИА

Ответы [ 3 ]

1 голос
/ 24 марта 2011

Вы можете сделать многочастную загрузку формы. Я думаю, что я использовал класс http://blog.inspirit.ru/?p=139,, но мне пришлось бы перепроверить, когда я доберусь до офиса.

РЕДАКТИРОВАТЬ: Да, ссылка выше верна. Этот конкретный класс делает загрузку файлов, и multipart/form-data довольно просто в AS3.

1 голос
/ 27 марта 2011

Как я уже говорил в комментарии, я ненавижу отвечать на свои вопросы, но я нашел это решение: http://blog.mikestead.me/upload-multiple-files-with-a-single-request-in-flash/, и оно работает ДЕЙСТВИТЕЛЬНО хорошо и полностью завершено, мне практически не приходилось делать лапшу.Единственное, что не удалось подробно описать в документах (которые я добавлю здесь), - это то, что на стороне сервера (особенно в PHP) файлы получают хэш, проиндексированный по имени переменной, которую вы установили.Поэтому, когда вы делаете

urlVariables["image1"] = new URLFileVariable(filePicker.data, filePicker.name); //this adds your file to the request in flash

, тогда на стороне PHP вы найдете этот файл в

$_FILES["image1"]["tmp_name"];
0 голосов
/ 24 марта 2011

У вас есть два метода: архивирование или отслеживание нескольких загрузок.

Если вы хотите сжать файлы, вот пошаговое руководство о том, как выполнить архивирование, загрузку и разархивирование из AIR .

Если вы хотите загрузить несколько файлов, вам нужно иметь массив логических значений или счетчик, который отслеживает, сколько загрузок было начато. Затем при событии, фиксирующем завершение загрузки, булевы значения должны быть изменены с false на true, или другой счетчик должен подсчитывать завершения. Когда все логические значения равны true или значения двух счетчиков совпадают, вы знаете, что все файлы были загружены.

Вот некоторый псевдокод:

fileCount= 0
fileUploadCompleteCount = 0

foreach(file in fileArray)
    fileCount++
    file.listenForUploadComplete(uploadComplete)

function uploadComplete()
    fileUploadCompleteCount++
    checkUploadProgress()

function checkUploadProgress()
    if(fileUploadCompleteCount == fileCount)
        // all files have been uploaded
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...