java 实现FTP下载文件。支持断点下载
来源:互联网 发布:阿里云开放3306端口 编辑:程序博客网 时间:2024/05/29 14:42
使用java 实现一个简单的FTP文件下载案例。
maven 依赖
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-ftp</artifactId>
<version>2.13.2</version>
</dependency>
----------------------------------------------------------------------------------------
public void throwApkStream(HttpServletResponse response,
HttpServletRequest request, @RequestParam String apkName) {
String url = GetConfigProject.getProperty("APKURL");服务器地址String username = GetConfigProject.getProperty("APKUID");FTP账号
String password = GetConfigProject.getProperty("APKPWD");FTP密码
String remotePath = GetConfigProject.getProperty("APKPATH");FTP文件夹路径
apkName = apkName + ".apk";
try {
ftp.connect(url, 21);
ftp.setControlEncoding("GB2312");
FTPClientConfig conf = new FTPClientConfig("WINDOWS");
conf.setServerLanguageCode("zh");
ftp.login(username, password);
ftp.setFileType(2);
ftp.enterLocalPassiveMode();
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return;
}
ftp.changeWorkingDirectory(remotePath);
FTPFile[] fs = ftp.listFiles();
for (int i = 0; i < fs.length; i++) {
FTPFile ff = fs[i];
if (!ff.getName().equals(apkName))
continue;
String filename = apkName;
response.setHeader(
"Content-disposition",
"attachment;filename="
+ URLEncoder.encode(filename, "utf-8"));
InputStream is = ftp.retrieveFileStream(filename);
response.setHeader("Accept-Ranges", "bytes");
long p = 0L;
long l = 0L;
l = ff.getSize();
if (request.getHeader("Range") != null) {
response.setStatus(206);
p = Long.parseLong(request.getHeader("Range")
.replaceAll("bytes=", "").replaceAll("-", ""));
}
response.setHeader("Content-Length", new Long(l - p).toString());
if (p != 0L) {
response.setHeader("Content-Range",
"bytes " + new Long(p).toString() + "-"
+ new Long(l - 1L).toString() + "/"
+ new Long(l).toString());
}
response.setContentType("application/octet-stream");
response.setHeader("content-disposition",
"attachment;filename=" + apkName);
is.skip(p);
byte[] buffer = new byte[1024];
OutputStream os = response.getOutputStream();
int len;
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
is.close();
os.flush();
os.close();
}
ftp.logout();
} catch (IOException e) {
e.printStackTrace();
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException localIOException2) {
}
}
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException localIOException3) {
}
}
}
}
0 0
- java 实现FTP下载文件。支持断点下载
- java实现文件断点下载
- java实现ftp下载文件
- Swift 下载文件 支持断点下载
- 用java编写多线程ftp断点下载文件程序
- 用java编写多线程ftp断点下载文件程序
- java 实现断点下载
- C# Ftp 源代码(支持断点上传,断点下载)
- 用php实现文件下载, 同时支持下断点形式
- java实现ftp下载文件【转】
- JAVA Ftp实现文件上传于下载
- Java实现FTP文件上传与下载
- Java实现FTP文件上传与下载
- java实现ftp文件下载的源代码
- Java实现FTP文件上传与下载
- JAVA代码实现FTP文件下载
- Java实现FTP文件上传与下载
- Java代码实现FTP文件下载
- 解决:java.lang.NumberFormatException: For input string: "id"
- PHP 中sprintf函数可以将整数格式化为浮点格式
- Shortest Prefixes
- javascript之prototype
- CSS1 background-color 属性
- java 实现FTP下载文件。支持断点下载
- CodeForces 22E Scheme【变成强联通图至少增加多少边并输出】
- Robot Framework 问题篇
- 关于小米文件管理器的介绍及源码下载
- UVA 11368 & POJ 3636 & HDU 1677 Nested Dolls(贪心 + 二分LIS)
- VR行业目前面临着多大的技术瓶颈?
- 关于android WebViewClient和WebChromeClient
- 【HUSTOJ】1077: 数组元素的查找
- ViewPagerIndicator抽取TabPagerIndicator