apache-flex - 通过URLRequest上传字节数组

标签 apache-flex actionscript-3 actionscript

我正在尝试上传一个字节数组,但是正在努力使内容类型成为image / png(无论我做什么,它总是成为application / octet-stream)。

我已经用Charles Proxy检查了请求,并可以确认它确实总是作为application / octet-stream出现。

我的代码是:

protected function onObjectLoaded(event:Event):void
{
    var byteArray:ByteArray = new ByteArray();
    var fileName:String = fileReference.name;
    var uploadPath:String = serviceURL;
    var parameters:Object = new Object();
    parameters.key = serviceKey;

    fileReference.data.readBytes(byteArray,0,fileReference.data.length);

    var urlRequest:URLRequest = new URLRequest();
    urlRequest.url = uploadPath;
    urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
    urlRequest.method = URLRequestMethod.POST;
    urlRequest.data = UploadPostHelper.getPostData(fileName, byteArray, "fileupload",  parameters);
    urlRequest.requestHeaders.push( new URLRequestHeader( 'Content-type', 'image/png' ) );

    var urlLoader:URLLoader = new URLLoader();
    urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
    /*urlLoader.addEventListener(Event.COMPLETE, onComplete);
    urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onError);
    urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);*/
    urlLoader.addEventListener(Event.COMPLETE, processResults);
    urlLoader.load(urlRequest);
}


如您所见,我将内容类型传递为“ multipart / form-data”。我尝试将其作为image / png传递,这使请求本身按预期的方式成为image / png,但是,图像本身仍作为application / octet-stream传递。

这是我现在的要求:


--rojpkvwesrtjvrgjbwtadelavgcmxjot Content-Disposition:表单数据;
name =“ key”

WZL0NXBE6dcb9af80668bb96b86fa72f5595422c
--rojpkvwesrtjvrgjbwtadelavgcmxjot Content-Disposition:表单数据;
name =“文件名”

Canada.png
--rojpkvwesrtjvrgjbwtadelavgcmxjot Content-Disposition:表单数据;
name =“ fileupload”; filename =“ Canada.png”内容类型:
应用/八位字节流

‰PNG-此处以字节数组形式加载图像信息


如您所见,Canada.png将作为application / octet-stream传递。关于服务器预期收到的请求,我已经弄弄了这个请求,并手动使其生效,这与上面的请求完全相同,但是它说:


Canada.png
--rojpkvwesrtjvrgjbwtadelavgcmxjot Content-Disposition:表单数据;
name =“ fileupload”; filename =“ Canada.png”内容类型:
应用/八位字节流


应该说:


Canada.png
--rojpkvwesrtjvrgjbwtadelavgcmxjot Content-Disposition:表单数据;
name =“ fileupload”; filename =“ Canada.png”内容类型:
图片/ png


我的问题是如何更改它,因此字节数组本身以image / png而不是八位字节流的形式传递

该图像是从客户端上传的,并作为FileReference传递,然后我调用load(),然后获取它的“数据”属性,该属性是字节数组所在的位置。

非常感谢这里的任何帮助,因为我已经为此苦苦挣扎了几个小时,但似乎无法更改字节数组的mime类型。

提前致谢,

最佳答案

您请求中的内容类型是在UploadPostHelper类中设置的。据我所知,它被硬编码为application / octet-stream。如果您仅要上传png图片,则可以将其更改为image / png。或者,您可以使用另一个url请求包装器上传文件,该文件允许您指定文件的内容类型。例如MultipartURLLoader

关于apache-flex - 通过URLRequest上传字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7298842/

相关文章:

apache-flex - Adobe Flash Builder 4 的 VIM 键绑定(bind)

c# - 将数据发布到 Flex/Flash (mxml) 应用程序

java - 高级 LCDS 主题的资源?

actionscript-3 - Flash CC 中的可检查参数未获取值

actionscript-3 - 检查字体是否嵌入?

apache-flex - 什么时候 IIS7 的负载过多?

actionscript-3 - AS3 用于沿路径移动影片剪辑

actionscript-3 - 如何在 AS3 中发送 GET 请求?

C#与Flash通信

flash - 字节数组到字符串