加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于Flex传递ByteArray的问题

发布时间:2020-12-15 04:05:27 所属栏目:百科 来源:网络整理
导读:最近用flex写了一个在线拍照的功能,一切都进展的比较顺利,最后完成了将工具放到项目中使用,发现不能使用,经过查看才发现是因为我最后传递的图片数据是一个ByteArray 对象,然后虽然使用了multipart-formdata这种方式来做为头信息,但是发现不行,因为ser

最近用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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读