zoukankan      html  css  js  c++  java
  • Jsp页面处理不在项目目录下的文件。

    最近在处理上传文件,由于上传的不在web项目目录下,所以在jsp页面用a标签直接连接地址是不可以下载的。

    后来百度和谷歌了之后,大家好像说jsp页面a标签的地址,在解析的时候,会默认去web项目下面寻找。而我们

    给的不是项目内的目录,所以是不会找到该文件的。

    后来找到一种方法,就是a标签链接到一个jsp页面,jsp页面进行处理。通过io流处理这个文件。

    方法如下:

    <%@page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gb2312"%><% 
    /*
    从链接处传入path的参数如download.jsp?path=userfile/123.jpg,download.jsp为本页JSP
    注意path是tomcat下的相对路径
    */
    String id=request.getParameter("id");
    String temp=request.getParameter("path");
    if(temp==null)
     temp="";
    String path=new String(temp.getBytes("8859_1"),"gb2312");
    response.reset();
    response.setContentType("application/x-download");
    String filenamedownload = path;
    String filenamedisplay = path.substring(path.lastIndexOf("/")+1,path.length()); 
    filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8"); 
    response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay); 
    OutputStream output = null; 
    FileInputStream fis = null; 
    try 
        { 
            output  = response.getOutputStream(); 
            if(id.equals("1")){
               filenamedownload="/home/weblogic/documents/file/"+filenamedownload;
           
            } else if(id.equals("3")){
           
            } else{
               filenamedownload="/home/weblogic/documents/table/"+filenamedownload;
           
          }
    
            System.out.println("filenamedownload:"+filenamedownload);
            File file=new File(filenamedownload);
            if (!file.exists()){
              out.println("对不起,文件已删除");
              return;
            }
            fis = new FileInputStream(filenamedownload);
            
            byte[] b = new byte[1024]; 
            int i = 0; 
            while((i = fis.read(b)) > 0) 
            { output.write(b, 0, i); 
            } 
            output.flush(); 
        } 
        catch(Exception e) 
        { 
            System.out.println("Error!"); 
            e.printStackTrace(); 
        } 
        finally 
        { 
            if(fis != null) 
            { 
                fis.close(); 
                fis = null; 
            } 
            if(output != null) 
            { 
                output.close(); 
                output = null; 
            } 
        } 
    %>


     

  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/ai03/p/3066235.html
Copyright © 2011-2022 走看看