1
我正在編寫將圖像和一些元數據一起上載到期望使用base64編碼的圖像執行POST操作的服務的功能。但是,圖像數據在發佈到服務器時似乎會變形,並且不會生成有效的圖像。我選擇使用URLRequest框架而不是HTTPService,因爲服務返回用戶想要保存的內聯下載。使用URLRequest發送Base64編碼數據
在這個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();
}
您正在使用的Base64編碼器是否將其編碼爲可通過網絡傳輸的安全字符串?如果字符包含在Base64字符串中,則字符+,=和/會導致問題。 – Ren
@人可能就是這樣。編碼器可以與HTTPService庫一起可靠地工作,但這可能會在幕後處理URL編碼問題。 –
我假設您在您的問題中提到的服務不受您的控制。他們是否有任何文件能夠指引您朝着正確的方向發展?也許他們提到了你應該改變這些符號的字符?通常它是''+'='%2B','/'='%2F'和'='='%3D' – Ren