zoukankan      html  css  js  c++  java
  • JavaWeb(实现文件下载)

    • 通过Servlet来实现文件的下载

    在使用JavaWeb文件的下载的时候,默认情况下,如果我们不指定

    content-type的时候 浏览器是无法判断如何去解析这个页面的,那它会怎么做呢,自动下载到本地

    当然要想让浏览器以文件的方式强制下载到桌面,可以使用          

    Content-Disposition=attachment;filename=xxx

    filename可以我们自己手动的去指定,如果不去指定的话,浏览器会默认下载当前静态网页的源码。

    参考下列一个简单的案例:

    package com.xyf.web6;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    @WebServlet("/DownLoadServlet")
    public class DownLoadServlet extends HttpServlet {
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    	{
          this.doPost(request, response);
    	}
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		
    		//将用户点击另存为到硬盘上
    //		doGet(request, response);
    		response.getWriter().println("hello");
    		//增加一句话
    	        response.addHeader("Content-Disposition","attachment");	
    	}
    
    }

    当服务器启动后

                  内容为hello的文件会自动询问用户是否需要下载。

                  

    打开后文件内容即为自己增加的hello这句话,当然我们无法将servlet的源码下载到本地的哦。

    好,现在我们大概理解了文件是如何下载的了,现在我们来看一下一个图片下载的案例吧

    图片下载案例    

    package com.xyf.web6;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    @WebServlet("/DownLoadServlet")
    public class DownLoadServlet extends HttpServlet {
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    	{
          this.doPost(request, response);
    	}
    	@Override
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String filename="testIamge.jpg";
    		//当文件名不是英文名的时候,最好使用url解码器去编码一下,
    		filename=URLEncoder.encode(filename,"UTF-8");
    	    //将响应的类型设置为图片
    		response.setContentType("image/jpeg");
            response.setHeader("Content-Disposition", "attachment;filename=" + filename);
    	    //好了 ,现在通过IO流来传送数据
            InputStream input=getServletContext().getResourceAsStream("/testImage.jpg");
            OutputStream output = response.getOutputStream();
    	    byte[]buff=new byte[1024*10];//可以自己 指定缓冲区的大小
            int len=0;
            while((len=input.read(buff))>-1)
            {
            	output.write(buff,0,len);
            }
            //关闭输入输出流
            input.close();
            output.close();
            
    	}
    
    }
    

    图片存放路径webcontent的下面、可以通过

      InputStream input=getServletContext().getResourceAsStream("/testImage.jpg");

    自己去配置图片的路径

    启动tomcat服务器后

    如此简单的实现了图片的下载。现在我们可以通过文件的下载功能满足日常任务的需要了。

    下一文将会说JavaWeb的文件上传,与文件上传的校验技术。

  • 相关阅读:
    HDU 4024 Dwarven Sniper’s hunting(数学公式 或者是二分)
    二分图最大匹配总结
    HDU 4022 Bombing (STL应用)
    HDU 1847 Good Luck in CET4 Everybody!(组合博弈)
    HDU 1556 Color the ball(树状数组)
    HDU 4023 Game(博弈)
    HDU 1406 完数(水题)
    HDU 4021 24 Puzzle
    Oracle 多表查询优化
    【编程之美】字符串移位包含的问题(续)
  • 原文地址:https://www.cnblogs.com/a986771570/p/8076304.html
Copyright © 2011-2022 走看看