浏览 3455 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-11-17
问题描述:服务器短获得客户端通过soapMessage传送过来的附件文件不完整 客户端通过SOAPMessage的addAttachmentPart方式上传附件,主要代码如下 AttachmentPart part=soapMessage.createAttachmentPart(); part.setContentType("application/octet-stream"); FileDataSource fds=new FileDataSource(fullPathNm); part.setDataHandler(new DataHandler(fds)); soapMessage.addAttachmentPart(part); 服务器段主要是对这个soapMessage进行处理 主要代码如下 it=soapMessage.getAttachments(); File outFile=null; try{ while(it.hasNext()){ AttachmentPart part=(AttachementPart) it.next(); outFile=new FileOutputStream(outFile); os = new FileOutputStream(new File(dir,fileName)); is = part.getDataHandler().getInputStream(); byte [] b=new byte[8192]; int nr; while((nr = is.read(b)) != -1){ //服务器段写入文件大小不争取,内容不完整 os.write(b,0,nr); } } }finally{ os.close(); is.close(); } 以上代码运行后,服务器端文件大小不完整。 以上问题已经分析一天了,没有找到原因 目前发现客户端确实上传了完整的文件 但是服务端获取的文件也确实不完整 难道传输有问题,会有什么问题? 有谁可以帮忙分析下 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-11-20
把try{}finally{}放入循环内,确保每一个附件的流都关闭了。
在写完后调用了 os.flush(); 试试看 while(it.hasNext()){ try{ AttachmentPart part=(AttachementPart) it.next(); outFile=new FileOutputStream(outFile); os = new FileOutputStream(new File(dir,fileName)); is = part.getDataHandler().getInputStream(); byte [] b=new byte[8192]; int nr; while((nr = is.read(b)) != -1){ //服务器段写入文件大小不争取,内容不完整 os.write(b,0,nr); } os.flush(); }finally{ os.close(); is.close(); } } |
|
返回顶楼 | |
发表时间:2014-01-07
应该是缓冲没有刷新:os.flush();
|
|
返回顶楼 | |