使用URLRequest发送Base64编码数据

时间:2012-10-31 15:41:55

标签: flex base64

我正在编写将图像和一些元数据上传到服务的功能,该服务期望使用base64编码的图像进行POST操作。但是,图像数据在发布到服务器时似乎会受到损坏,并且不会生成有效图像。我选择使用URLRequest框架而不是HTTPService,因为该服务返回用户想要保存的内联下载。

此URLRequest调用中是否存在我正在正确处理编码的位置?

    public function imageExportHandler():void
    {
        trace(this);
        var request:URLRequest = new URLRequest();
        request.method = URLRequestMethod.POST;
        request.url = imageExportServiceUrl;

        var params:Object = {
            image: encodeImageBase64(imageData),
            name: StringUtil.substitute("map-{xmin},{ymin}-{xmax},ymax}", imageExtent),
            format: Model.instance.imageExportModel.selectedFormat
        };
        request.data = new URLVariables(StringUtil.substitute("image={image}&format={format}&name={name}", params));
        navigateToURL(request, "_blank");
    }

    private function encodeImageBase64(toEncode:BitmapData):String
    {
        var pngEncoder:PNGEncoder = new PNGEncoder();
        var data:ByteArray = pngEncoder.encode(toEncode);
        var base64Encoder:Base64Encoder = new Base64Encoder();
        base64Encoder.encodeBytes(data);
        return base64Encoder.flush();
    }

1 个答案:

答案 0 :(得分:0)

事实证明,base64Encoder.flush()未正确终止编码字符串 - 正确使用的函数是base64Encoder.toString()。