如何将ByteArray(从Flash)和一些表单数据发送到php?

10 php flash jpeg input actionscript-3

我有一个用Flash AS3制作的草图垫,如下所示:http://henryjones.us/articles/using-the-as3-jpeg-encoder

我想将jpg发送到服务器,并使用php将html表单字段中的一些数据发送到服务器.当按下提交按钮时,有没有办法强制Flash影片传递图像文件?

quo*_*uoo 5

这有点棘手:你可以通过以下两种方式之一做到:

Arthem在另一个帖子中发布了这个:

这对我很有帮助:http: //www.quietless.com/kitchen/upload-bitmapdata-snapshot-to-server-in-as3/

您需要修改URLRequestWrapper以在需要时插入字段名称和文件名.这就是我所做的:

bytes ='Content-Disposition:form-data; name ="'+ $ fieldName +'"; 文件名="';

它执行最多的标头格式化,以便服务器可以将其理解为文件上载.

顺便说一句,如果你有一个BitmapData,你可能需要先将它编码为JPEG或PNG.

我通常使用这个解决方案:

我没有使用过imageshack API,但你可能想尝试使用adobe的JPGEncoder类 - 这是一个传递用户名和JPG字节数组的快速示例,它非常简单.

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);
}
Run Code Online (Sandbox Code Playgroud)

请注意,变量作为查询字符串的一部分传递.您可以使用URLVariables,因为URLVariables将存储在请求的data属性中,我们已经使用它来传递byteArray.