Servlet+html+tomcat实现文件的上传和下载 |
您所在的位置:网站首页 › servlet上传文件 › Servlet+html+tomcat实现文件的上传和下载 |
文件的下载
核心:服务器响应文件数据到前台,当你点击连接实现下载具体步骤: 1—>在html中书写一个a标签来访问后台:
日本国女星大合集.avi
当我们点击这个连接浏览器就会下载,OK,要实现这个功能最关键的就是你要有这个资源,哈哈哈,所以我们需要在项目里面新建一个文件夹来存放资源 2.编写FileDownServlet程序类: public class FileDownServlet extends HttpServlet{ private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.获取文件名 String fielname = request.getParameter("filename"); //2.指定响应的头信息为Content-Disposition为attachment;filename=,为了防止显示中文乱码 response.setHeader("Content-Disposition","attachment;filename="+new String(fielname.getBytes("utf-8"),"iso8859-1")); //获取输入输出流读取文件 InputStream inputStream = getServletContext().getResourceAsStream("source/"+fielname); ServletOutputStream outputStream = response.getOutputStream(); byte[] br=new byte[1024]; int len=-1; while ((len=inputStream.read(br))!=-1) { outputStream.write(br,0,len); } outputStream.close(); inputStream.close(); } }这里关于怎么创建就暂时不说了,其实很简单,就是继续HttpServlet类,重写service方法,然后去web.xml中注册一下,注意虚拟路径. 3.我再写一下思路,首先就是获取超链接中的携带的资源名,不然不知道你点击下载的是什么文件,其次指定response响应的头信息为文件下载,代码是规定死的,没什么好解释的,然后使用response指定的输入输出流来读写,这里使用字节输入流,因为这个视频不是文本文件,不能使用字符输入流,最关键的是读取方式,这个是一个动态web项目,所以路径是会发生变化的,所以需要使用另外一种方式. 最终就可以实现点击超链接下载的功能实现了. 文件的上传 用户上传文件,所以涉及到request对象,请求上传文件具体实现在前端会复杂一些,后端代码反而不是很难实现是前端代码: 上传文件 头像:这个必须使用form表单带的file类型的标签,其次必须为post请求,不能为get,表单还必须添加一个属性:enctype="multipart/form-data"缺一不可. 4.到这一步就基本上没啥难的,还是新建一个FileUpServlet程序类,依旧是继承重写注册,但此时最重要的来了,需要给这个Servlet添加注解:@MultipartConfig @MultipartConfig public class FileUpServelt extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.获取上传的文件对象 Part part = request.getPart("photo"); //获取文件名 String name = part.getSubmittedFileName(); //2在服务器目录下新建一个文件夹存放 File file=new File("E:/ziyuan"); if (!file.exists()) { file.mkdir(); } //3开始写入文件 part.write(file+"/"+name); } }剩下就是靠Part这个对象来完成功能了,首先获取上传的文件对象,使用Part对象接受,然后获取文件名,再使用I/O流中文件的创建,我在F盘下新建一个文件夹,并且进行判断是否创建了,然后直接调用Part对象的write()方法将绝对路径地址写入就会写入上传的文件了. OK,以上就是文件的上传和下载了. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |