2016-09-13 21 views
0

sftpからファイルをダウンロードするのにvfs2を使用しています。vfs2 - ダウンロード中にsftpファイルが破損しました

.txtおよび.xmlファイルは正しくダウンロードされていますが、.pdfファイルが破損しています。以下は

は私のコードです:

誰もが私が間違っているのか見ていますか?

import org.apache.commons.vfs2.*;  
public void downloadFile(HttpServletResponse response, HttpServletRequest request, String localFilePath, String fileName) throws Exception 
{ 
      OutputStream outStream = null; 
      StandardFileSystemManager manager = new StandardFileSystemManager(); 
      boolean success = false; 
      String remoteFilePath = localFilePath.replaceAll("^[a-zA-Z]:", ""); 

      try{ 
      manager.init(); 
      FileObject remoteFile = manager.resolveFile(createConnectionString(remoteFilePath), createDefaultOptions()); 
      InputStream istream = remoteFile.getContent().getInputStream(); 

      String file = request.getParameter("fileName"); 
      response.setHeader("Content-Disposition", "attachment; filename=\"" + file + "\""); 
      response.setContentType("APPLICATION/OCTET-STREAM"); 
      outStream = response.getOutputStream(); 

      int len; 
      byte[] buffer = new byte[1024]; 
      while ((len = istream.read(buffer)) != -1) { 
       outStream.write(buffer, 0, len); 
      } 
      outStream.flush(); 
      outStream.close(); 
      istream.close(); 

      long size = remoteFile.getContent().getSize(); 
      success = remoteFile.exists() && size == remoteFile.getContent().getSize(); 
     } 
     catch (Exception e) { 
      throw new RuntimeException(e); 
     } finally { 
      manager.close(); 
     } 
    } 
public String createConnectionString(String remoteFilePath) { 
     return "sftp://" + this.username + ":" + this.password + "@" + hostName + "/" + remoteFilePath; 
} 

答えて

0

openSSHが部分ファイルをダウンロードしていたことが判明しました。ファイルをダウンロードしようとするたびに、いくつかのバイトが欠落していました。 openSSHをfreeSSHdに置き換えて、問題を修正しました。

関連する問題