关于Flex传递ByteArray的问题

  • Post author:
  • Post category:其他


最近用flex写了一个在线拍照的功能,一切都进展的比较顺利,最后完成了将工具放到项目中使用,发现不能使用,经过查看才发现是因为我最后传递的图片数据是一个ByteArray

对象,然后虽然使用了multipart-formdata这种方式来做为头信息,但是发现不行,因为servlet容器在处理http头信息时发现你是上传的文件,他就会做相应的转换,具体做什么转换不清楚,总的来说就是,如果你的数据不符合multipart-formdata的话,容器就会把你“挡在门外”,如果要正确的接收前台的数据有两种方式

一、直接以字节流的方式传递,也就是说将头信息设置为如request.contentType = “application/octet-stream”;形式

然后在服务器端直接读取这些数据

二、将数据的格式转化为符合multipart-formdata的形式,我在网上找到了一个人写的工具类,可以很方便的将数据转化为这种形式

具体做法很简单,贴点重要代码做参考

var url:String=”http://www.test.com/upload/UploadAction.action”;//上传地址自己根据实际情况定


var request:URLRequest=new URLRequest(url);


//form表单提交,同时声明分隔符boundary


request.contentType=”multipart/form-data; boundary=”+UploadPostHelper.getBoundary();


request.requestHeaders.push(new URLRequestHeader( ‘Cache-Control’, ‘no-cache’));


request.method=URLRequestMethod.POST;


//设置上传文件名和上传数据

//getPostData()方法主要是根据RFC1867来处理数据



request.data=UploadPostHelper.getPostData(fileName, data, parameters);



版权声明:本文为googlevsbing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。