zoukankan      html  css  js  c++  java
  • MyEclipse------从服务器下载文件

    Downfile.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
    %>
    <%@page import="java.io.*" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">
    <title>My JSP 'Downfile.jsp' starting page</title>
    <style type="text/css">
        a:hover{color:red;}
    </style>
    </head>
    
    <body>
        <center>
        <font color="#00008b" size="5" >文件下载站</font><br><br>
        <table>
            <%
                path=request.getRealPath("");
                File file=new File(path,"\myfile");
                String str[]=file.list();
                for(int i=0;i<str.length;i++){
                    String s=str[i];
                    out.print("<tr><td>"+s+"</td><td><a href='file/Downfile1.jsp?name="+s+"'>下载</a></td></tr>");
                }
             %>
        </table>
        </center>
    </body>
    </html>

    Downfile1.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                + request.getServerName() + ":" + request.getServerPort()
                + path + "/";
    %>
    <%@page import="java.io.*"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">
    <title>My JSP 'Downfile1.jsp' starting page</title>
    </head>
    
    <body>
        <%
            response.reset();
            try {
                String str = request.getParameter("name");
                //第一个参数为要解码的字节字符,第二个参数为解码方法
                //getBytes()里面的参数为str原来的编码方式
                str = new String(str.getBytes("UTF-8"), "UTF-8");
                
                path = request.getRealPath("");
                out.print(path);
                path = path.substring(0, path.lastIndexOf("\"));
                out.print(path);
                path = path + "\myfile\";
    
                //第一个参数为路径,第二个参数文件名
                File fileLoad = new File(path, str);
                response.reset();
    
                OutputStream o = response.getOutputStream();
                BufferedOutputStream bos = new BufferedOutputStream(o);
                
                //输出文件用的字节数组,每次发送500个字节到输出流
                byte b[] = new byte[500];
    
                //客户端使用保存文件的对话框
                response.setHeader(
                        "Content-disposition",
                        "attachment;filename="
                                + new String(str.getBytes("UTF-8"), "UTF-8"));
                //通知客户文件的MIMIE类型
                response.setContentType("application/x-tar");
                long fileLength = fileLoad.length();
                String length = String.valueOf(fileLength);
                response.setHeader("Content_length", length);
                FileInputStream in = new FileInputStream(fileLoad);
                int n = 0;
                while ((n = in.read(b)) != -1) {
                    bos.write(b, 0, n);
                }
                bos.close();
                //java.lang.IllegalStateException: getOutputStream() has already been called for this response
                //加入下面两句不会抛出异常,取消response.reset(),否则会抛出
                //java.lang.IllegalStateException: Cannot call reset() after response has been committed
                out.clear();
                out=pageContext.pushBody();
            } catch (Exception e) {
                System.out.print(e);
            }
            //response.reset();
        %>
    </body>
    </html>
  • 相关阅读:
    C++:怎样把一个int转成4个字节?
    安装虚拟机
    [Flux] 1. Development Environment Setup
    [CSS] Animating SVG
    [Node.js] Scraping Dynamic JavaScript Websites with Nightmare
    [React] React Fundamentals: Integrating Components with D3 and AngularJS
    [React] React Fundamentals: with-addons
    [JavaScript] Array.prototype.reduce in JavaScript by example
    [CSS] @keyframes
    [CSS] Transforms
  • 原文地址:https://www.cnblogs.com/tianhengblogs/p/5316936.html
Copyright © 2011-2022 走看看