Как я могу отправить ByteArray (от Flash) и некоторые данные формы к php?

Эта ошибка возникает либо в том случае, если вы пропустили initramfs этого ядра, либо если на вашем загрузочном диске недостаточно места.

  • Если вам не хватает initramfs, то вы можете заглянуть в эту ссылку . Как показано, вы должны обновить ваши initramfs и grub.

  • Если ошибка вызвана 100% использованием загрузочного пространства, проверьте эту ссылку .

Иногда неудачные обновления ядра и GRUB, пытающийся выбрать последнее ядро, также могут привести к этой проблеме (о которой вы можете узнать во второй ссылке).

10
задан dirkgently 28 February 2009 в 12:25
поделиться

4 ответа

это немного сложно: вы можете сделать это одним из двух способов:

Arthem разместил это в другой ветке:

Это мне очень помогло: http://www.quietless.com/kitchen/upload-bitmapdata-snapshot-to-server-in-as3/

Вам необходимо изменить URLRequestWrapper для вставки поля имена и имена файлов, где это необходимо. Вот что я сделал:

bytes = 'Content-Disposition: образуют-данные; name = "'+ $ fieldName +'"; filename = "';

Это делает большинство форматирования заголовков so the server could understand it as a file upload.

By the way, if you have a BitmapData you might need to encode it to JPEG or PNG first.

And I usually use this solution:

I haven't used the imageshack API, but you may want to try using adobe's JPGEncoder class - here's a quick example that passes a username and the JPG's byte array, it's really quite simple.

private function savePicToServer(bmpData:BitmapData):void
{
    var jpgEncoder:JPGEncoder = new JPGEncoder(85);
    var jpgStream:ByteArray = jpgEncoder.encode(bmpData);

    var loader:URLLoader = new URLLoader();
        configureListeners(loader);

    var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
    var request:URLRequest = new URLRequest(ModelLocator.BASE_URL + ModelLocator.UPLOAD_URL + "?user=" + ModelLocator.getInstance().username);
    request.requestHeaders.push(header);
    request.method = URLRequestMethod.POST;
    request.data = jpgStream;
    loader.load(request);
}

Note that the variables are passed as part of the query string. You can't use URLVariables, as several people have suggested, as the URLVariables would be stored in the request's data property, which we are already using to pass the byteArray.

5
ответ дан 4 December 2019 в 02:52
поделиться

Если Вы не используете гибкий провод, попробуйте URLLoader && URLrequest, для передачи данных как переменной POST.

0
ответ дан 4 December 2019 в 02:52
поделиться

Можно использовать HTTPService для отправки данных. Вот учебное введение вида.

0
ответ дан 4 December 2019 в 02:52
поделиться

Я хотел отправить зашифрованный код авторизации из Flash в PHP вместе с изображением JPG. Публиковать это в переменных get было неприемлемо, поэтому я обошел стороной. Большая часть кода - это фактическая сборка моментального снимка стадии, но только его определенной области. Часть, которая имеет отношение к здесь, - это использование writeMultiByte для прикрепления зашифрованного пароля к концу информации об изображении jpb. Затем я отправляю длину этого пароля, используя строку URL-адреса get переменных, чтобы PHP знал, что нужно отрубить конец.

var stage_snapshot:BitmapData = new BitmapData(600, 120);
var myRectangle:Rectangle = new Rectangle(0, 0, 600, 120);
var myMatrix:Matrix = new Matrix();
var translateMatrix:Matrix = new Matrix();
translateMatrix.translate(-101, -33);
myMatrix.concat(translateMatrix);
stage_snapshot.draw(stage,myMatrix,null,null,myRectangle);
trace ("creating JPGEncoder");
// Setup the JPGEncoder, run the algorithm on the BitmapData, and retrieve the ByteArray
var encoded_jpg:JPGEncoder = new JPGEncoder(100);
var jpg_binary:ByteArray = new ByteArray();
jpg_binary = encoded_jpg.encode(stage_snapshot);
var pw = cryptoSalt.encrypt("mysecretpassword");
**var pwLength = pw.length;
jpg_binary.writeMultiByte(pw,"us-ascii");**
trace ("stage snapshot taken");
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
var request:URLRequest = new URLRequest("savejpg.php?length1=" + pwLength);
request.requestHeaders.push(header);
request.method = URLRequestMethod.POST;
request.data = jpg_binary;
var loader:URLLoader = new URLLoader();
trace ("sending pic to php");
loader.load(request);
loader.addEventListener(Event.COMPLETE,finishSave);

Принимающий PHP:

$pwlength = $_GET['length1'];
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
$pw = substr($jpg, - $pwlength);
$jpg = substr($jpg,0,strlen($jpg) - $pwlength);
$filename = 'uploads/test.jpg';
file_put_contents($filename, $jpg);
file_put_contents("uploads/pw.txt",$pw);
2
ответ дан 4 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: