Загрузка файла POST с использованием URLRequest

У меня есть быстрый вопрос относительно загрузки файлов POST в ActionScript 3. Я пытаюсь загрузить ByteArray из памяти через POST на сервер. Я использую класс URLRequest для отправки данных и URLLoader, потому что я хочу отслеживать прогресс. Соответствующие разделы кода следующие:

var uploadRequest:URLRequest = new URLRequest("http://127.0.0.1/upload.php");
uploadRequest.method = URLRequestMethod.POST;
uploadRequest.contentType = "multipart/form-data";
uploadRequest.data = myByteArray;

var uploader:URLLoader = new URLLoader;
uploader.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
uploader.addEventListener(Event.COMPLETE, onUploadComplete);
uploader.dataFormat = URLLoaderDataFormat.BINARY;
uploader.load(uploadRequest);

Проблема в том, что я установил свои обратные вызовы для отслеживания хода загрузки, а свойство bytesTotal объекта ProgressEvent всегда равно 1960 (размер запроса минус данные?), Даже если фактические данные составляют около 20 МБ, а файл не загружен. даже после полного события.

Я проверил, что upload.php правильно работает с помощью простой HTML-формы, и я могу убедиться, что myByteArray содержит все данные, о которых идет речь. Может кто-нибудь сказать мне, что я делаю не так?

Редактировать:

Я попытался пару новых вещей, которые я должен упомянуть. Первый - установить тип контента для application / octet-stream вместо multipart / form-data, что не имело никакого эффекта, кроме увеличения количества байтов до 1964. Я также проверил журнал ошибок Apache и обнаружил, что следующий текст многократно повторяется :

Предупреждение PHP: Отсутствует граница в POST-данных multipart / form-data в Unknown в строке 0

Я предполагаю, что Flash по какой-то причине неправильно форматирует HTTP-запрос. Учитывая, что я создал FileReference, который использует те же методы, которые я установил для URLLoader для загрузки файла с диска, и получил ожидаемый результат: свойство bytesTotal соответствовало размеру файла, и файл был загружен правильно.

Исходя из этого, я нашел в документах Adobe для разработчиков страницу, в которой упоминается загрузка данных на сервер с помощью FileReference.upload (), установив параметр data в URLRequest, поэтому я попробовал следующий код:

var uploadRequest:URLRequest = new URLRequest("http://127.0.0.1/upload.php");
uploadRequest.method = URLRequestMethod.POST;
uploadRequest.data = myByteArray;

fileRef = new FileReference;
fileRef.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
fileRef.addEventListener(Event.COMPLETE, onUploadComplete);
fileRef.upload(uploadRequest);

Что привело к следующему выводу:

ArgumentError: Ошибка № 2127: данные POST FileReference не могут иметь тип ByteArray.

Я действительно застрял здесь. Мы ценим любые предложения!

Ответы на вопрос(1)

Ваш ответ на вопрос