论坛首页 Java企业应用论坛

WebService 服务端接收客户端传输的附件不完整

浏览 3455 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-11-17  
环境:WebLogic1001,AIX 6.1
问题描述:服务器短获得客户端通过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();
}
 



以上代码运行后,服务器端文件大小不完整。
以上问题已经分析一天了,没有找到原因
目前发现客户端确实上传了完整的文件
但是服务端获取的文件也确实不完整
难道传输有问题,会有什么问题?

有谁可以帮忙分析下
   发表时间: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();  
} 
  }  

0 请登录后投票
   发表时间:2014-01-07  
应该是缓冲没有刷新:os.flush(); 
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics