Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Upload ByteArray (http://www.flasher.ru/forum/showthread.php?t=123223)

Olban 27.03.2009 15:43

Upload ByteArray
 
Интересует, возможно ли реализовать такое:

Открываем файл c помощью FileReference, считываем с него первых 1000 байт, и загружаем c помощью upload(request);
вот как-то так:
Код AS3:

var fileData:ByteArrayAsset = ByteArrayAsset(file.data);
var part:ByteArray = new ByteArray();
fileData.readBytes(part, 0, 1000);
var request:URLRequest = new URLRequest("save-file.php");
part.upload(request);

Нужно загружать upload-ом, поскольку если использовать load, то нет возможности контролировать отправленные байты, соответсвенно нельзя сделать прелоадр.

BlooDHounD 27.03.2009 16:17

возможно. только первая строчка не будет работать.

Olban 27.03.2009 16:44

Выдает ошибку Call to a possibly undefined method upload through a reference with static type flash.utils:ByteArray.
Хм.. как тогда же подсунуть методу upload бинарные данные?
У меня есть сомнения. upload не позволит подсавить другой тип. Тут нужно, чтобы part был FileReferenc-ом. А перезаписать в file.data тоже не получится, так как оно только для чтения.

BlooDHounD 27.03.2009 16:52

госпади .. да смотрите же что пишите.
с каких пор в FileReference лежит ByteArrayAsset?
откуда у класса ByteArray метод upload?

я такой фигнёй никогда не занимался, но код, должен быть типа такого:
Код AS3:

                function upload(file:FileReference):void {
                        var part:ByteArray = new ByteArray();
                        file.data.readBytes( part, 0, 1000 );
                        var request:URLRequest = new URLRequest( 'save-file.php' );
                        request.method = URLRequestMethod.POST;
                        request.data = part;
                        file.upload( request );
                }


Olban 27.03.2009 17:27

Ступил) с кем не бывает. В твоем коде после строчки file.data.readBytes( part, 0, 10 ); почему-то не происходит отправка методом upload.

BlooDHounD 27.03.2009 17:58

ну почему она не происходит, я без понятия, так как никогда его не делал. всё дело в последней строчке. с ней и возитесь, или ждите помощи от других.

wvxvw 27.03.2009 18:14

Цитата:

Сообщение от http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/net/FileReference.html#upload()
upload() method
public function upload(request:URLRequest, uploadDataFieldName:String = "Filedata", testUpload:Boolean = false):void
Language Version: ActionScript 3.0
Runtime Versions: AIR 1.0 Flash Player 9
Starts the upload of a file selected by a user to a remote server. [...]

Это значит, что вы не можете отправить произвольные данные - только файл, выбраный пользователем через системный диалог. Если вам нужно отправить данные, которые вы сами скомбинировали - используйте URLLoader / URLStream.

dimarik 27.03.2009 19:17

http://help.adobe.com/ru_RU/AS3LCR/F...uest.html#data
Цитата:

Если объект относится к типу ByteArray, то двоичные данные этого объекта используются в качестве данных POST. Данные типа ByteArray не поддерживаются для метода GET. Вдобавок, данные ByteArray не поддерживаются для FileReference.upload() и FileReference.download().

etc 27.03.2009 19:47

Интересно, что будет, если сделать file.data.length = 1000; и отправить…

BlooDHounD 27.03.2009 20:13

__etc, вероятно то что надо :)


Часовой пояс GMT +4, время: 19:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.