Apache flex 通过URLRequest通过teArray上传
我试图上传bytearray,但我很难让内容类型变成image/png(无论我做什么,它总是变成application/octet流) 我已经用Charles Proxy检查了请求,可以确认它确实总是作为应用程序/八位字节流进行 我的代码是: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
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请求包装器上载文件,允许您指定文件的内容类型。例如。您,先生。。你真是个天才!真不敢相信我竟然没有想到这一点。我已经开始使用这个包装,在你提到之前我完全忘记了它!非常感谢你!我还将看一看多端口加载器