1

base64でエンコードされた画像を使用したPOST操作を期待しているサービスに、メタデータとともに画像をアップロードする機能を作成しています。ただし、画像データはサーバーに投稿されたときに壊れているようで、有効な画像を生成しません。ユーザーが保存したいインラインダウンロードをサービスが返すため、HTTPServiceではなくURLRequestフレームワークを使用することを選択しました。

この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();
    }
4

1 に答える 1

0

base64Encoder.flush()がエンコードされた文字列を適切に終了していなかったことが判明しました-使用する正しい関数はbase64Encoder.toString()です。

于 2012-10-31T18:09:20.143 に答える