Apache flex 通过URLRequest通过teArray上传

Apache flex 通过URLRequest通过teArray上传,apache-flex,actionscript-3,actionscript,Apache Flex,Actionscript 3,Actionscript,我试图上传bytearray,但我很难让内容类型变成image/png(无论我做什么,它总是变成application/octet流) 我已经用Charles Proxy检查了请求,可以确认它确实总是作为应用程序/八位字节流进行 我的代码是: protected function onObjectLoaded(event:Event):void { var byteArray:ByteArray = new ByteArray(); var fileName:String = f

我试图上传bytearray,但我很难让内容类型变成image/png(无论我做什么,它总是变成application/octet流)

我已经用Charles Proxy检查了请求,可以确认它确实总是作为应用程序/八位字节流进行

我的代码是:

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);
}
正如你所看到的,我;m将内容类型作为“多部分/表单数据”传递。我试着将其作为image/png传递,这使得请求本身成为image/png,但图像本身仍然是application/octet流

下面是我现在的请求:

--ROJPKVWESRTJVRGJBWTADAELAVGCMXJOT内容配置:表单数据; name=“key”

WZL0NXBE6DCB9AF80668BB96B86FA72F559542C --ROJPKVWESRTJVRGJBWTADAELAVGCMXJOT内容配置:表单数据; name=“Filename”

加拿大.png --ROJPKVWESRTJVRGJBWTADAELAVGCMXJOT内容配置:表单数据; name=“fileupload”;filename=“Canada.png”内容类型: 应用程序/八位字节流

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

如您所见,Canada.png作为application/octet流传入。我对请求进行了修改,并手动使其工作,以确定我的服务器预期接收到的内容,这与上面的内容完全相同,但其中显示:

加拿大.png --ROJPKVWESRTJVRGJBWTADAELAVGCMXJOT内容配置:表单数据; name=“fileupload”;filename=“Canada.png”内容类型: 应用程序/八位字节流

它应该说:

加拿大.png --ROJPKVWESRTJVRGJBWTADAELAVGCMXJOT内容配置:表单数据; name=“fileupload”;filename=“Canada.png”内容类型: 图像/png

我的问题是如何改变这一点,这样bytearray本身就可以作为image/png而不是八进制流传入

这个图像是从客户端上传的,并作为FileReference传递,然后我调用load(),然后获取它的“data”属性,这就是bytearray所在的位置

这里的任何帮助都将不胜感激,因为我已经为此奋斗了几个小时,但似乎无法改变bytearray的mime类型


提前感谢,

请求中的内容类型设置在UploadPostHelper类中。据我所知,它被硬编码为应用程序/八位字节流。如果您只想上传png图像,可以将其更改为image/png。或者,您可以使用另一个url请求包装器上载文件,允许您指定文件的内容类型。例如。

您,先生。。你真是个天才!真不敢相信我竟然没有想到这一点。我已经开始使用这个包装,在你提到之前我完全忘记了它!非常感谢你!我还将看一看多端口加载器