2016-09-13 7 views
0

Я использую vfs2 для скачивания файла через sftp.vfs2 - sftp Файл поврежден во время загрузки

и .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, и он исправил проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^