如何实现文件的跨服务器下载??
3中处理方式 1、服务器A通过stock 将服务器B 上得文件读取到A服务器上然后再输出给用户 2、服务器B用http、ftp 等协议能直接传输到用户端,服务器A只要定位到B服务器上的文件绝对路径即可 3、服务器A和B在一个Lan 网段,可以通过A访问B上的共享在实现 方式1性能消耗大,方式2不能控制用户(如需登录、积分)
其实我建议使用一个专门的ftp客户端来使用ftp比较好,这样你只需要在客户端上输入ftp服务器的IP和端口,账号,密码,就能轻松的上传和下载文件,非常实用。
这里我推荐使用IIS7服务器管理工具,它可以作为FTP的客户端,想要进行FTP的上传下载操作,只需要下载安装iis7服务器管理工具就可以了!免费下载,很方便。
同时它还可以作为VNC的客户端,进行VNC的相应操作!它能够连接Windows和Linux系统下的服务器和VPS,能满足你不同系统的使用,感觉不错的话可以试试
在jsp/servlet中断点/多线程下载文件
<%@ page import="javaioFile" %><%@ page import="javaioIOException" %>
<%@ page import="javaioOutputStream" %>
<%@ page import="javaioRandomAccessFile" %>
<%!
public void downloadFile(HttpServletRequest request, HttpServletResponse response, File file) throws IOException {
RandomAccessFile raf = new RandomAccessFile(file, "r");
javaioFileInputStream fis = new javaioFileInputStream(rafgetFD());
responsesetHeader("Server", "wwwtrydonecom");
responsesetHeader("Accept-Ranges", "bytes");
long pos = 0;
long len;
len = raflength();
if (requestgetHeader("Range") != null) {
responsesetStatus(HttpServletResponseSC_PARTIAL_CONTENT);
pos = LongparseLong(requestgetHeader("Range")
replaceAll("bytes=", "")
replaceAll("-", "")
);
}
responsesetHeader("Content-Length", LongtoString(len - pos));
if (pos != 0) {
responsesetHeader("Content-Range", new StringBuffer()
append("bytes ")
append(pos)
append("-")
append(LongtoString(len - 1))
append("/")
append(len)
toString()
);
}
responsesetContentType("application/octet-stream");
responsesetHeader("Content-Disposition", new StringBuffer()
append("attachment;filename=\"")
append(filegetName())
append("\"")toString());
rafseek(pos);
byte[] b = new byte[2048];
int i;
OutputStream outs = responsegetOutputStream();
while ((i = rafread(b)) != -1) {
outswrite(b, 0, i);
}
rafclose();
fisclose();
}
%>
<%
String filePath = requestgetParameter("file");
filePath = applicationgetRealPath(filePath);
File file = new File(filePath);
downloadFile(request, response, file);
%>
0条评论