【发布时间】:2016-09-13 23:38:48
【问题描述】:
我正在使用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;
}
【问题讨论】:
标签: download sftp apache-commons-vfs