前面有介绍过文件传输的实现,今天来教教大家如何实现网页上的文件下载功能~
仅谈文件传输的话,这与javaSE中学的IO流如出一辙,换汤不换药罢了.
以下为本次小课题的代码实现:
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过路径得到一个输入流
String path = this.getServletContext().getRealPath("/WEB-INF/classes/sourse/photo.jpg");
FileInputStream fis = new FileInputStream(path);
//创建字节输出流
ServletOutputStream sos = response.getOutputStream();
//执行输出操作
int len = 1;
byte[] b = new byte[1024];
while((len = fis.read(b)) != -1) {
sos.write(b, 0, len);
}
/*方法内可以不关流*/
sos.close();
fis.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
以上代码实现的仅仅是B/S模式的文件传输功能,效果图如下:
要想实现图片的下载功能少不了以下几段代码:
//得到要下载的文件名
String filename = path.substring(path.lastIndexOf("\\")+1); // "\\" == "/" 第一个"\"用于转意
//设置文件名的编码
filename = URLEncoder.encode(filename, "UTF-8");
//告知客户端要下载的文件
response.setHeader("content-disposition", "attachment;filename=" + filename);
response.setHeader("content-type", "image/jpeg"); //jpeg的简写为jpg Content-type:下载文件类型
代码全了,这下看看效果如何~
网页刚一打开,文件下载的小窗就自动弹出来了.
有木有心动呢,心动不如行动,赶快上手试试吧~
查看相关git代码请移步:https://github.com/striner/javaCode/blob/master/fileDownloadOnline
喜欢就请关注我,你们的关注是我最大的动力~

本文介绍了如何在网页上实现文件下载功能,主要利用Java的IO流和字节流技术,详细展示了B/S模式下的文件传输代码,包括图片下载的关键代码,并给出了实际效果的展示。想要尝试的读者可以参考提供的GitHub代码链接。
434

被折叠的 条评论
为什么被折叠?



