在页面1.jsp中点击连接,取得ID,在2.jsp中经过运算得到URL,请问现在我怎么操作马上跳出下载提示框?就是象直接点的是下载连接我也用了重定向(sendredirect(url))啊,但是他是直接播放,怎么让他是下载不是直接播放?

解决方案 »

  1.   

    package com.dw;
    import java.io.IOException;
    import java.io.PrintWriter;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class DownloadsServlet extends HttpServlet { private static final long serialVersionUID = -6664176293056839762L; public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    // ////////////////////////rlq
    String filename = request.getParameter("file");
    if (filename != null) {
    String filename2 = new String(request.getParameter("file")
    .getBytes("GBK"), "ISO_8859_1");
    // bhString bhstr = new bhString(); //我自己定义的类
    // filename2 =
    // bhstr.getFileName(filename2);//用来获取文件名,比如提交的是upload/test.jpg,取得test.jpg
    String rootpath = getServletContext().getRealPath("/");
    String filepath = rootpath + filename;
    response.setContentType("application/octet-stream;charset=GBK");
    response.setHeader("Content-disposition", "attachment;filename=\""
    + filename2 + "\"");
    // //////////////////////////
    // //String s =
    // "I:\\SetupRes\\Sun\\j2re-1_4_2_05-windows-i586-p.exe";
    // String s = "e:\\tree.mdb"; // 经测试 RandomAccessFile 也可以实现,有兴趣可将注释去掉,并注释掉 FileInputStream 版本的语句
    // java.io.RandomAccessFile raf = new
    // java.io.RandomAccessFile(s,"r");
    try{
    java.io.File f = new java.io.File(filepath);
    java.io.FileInputStream fis = new java.io.FileInputStream(f);

    response.reset(); //del by rlq// response.setHeader("Server", "[email protected]"); // 告诉客户端允许断点续传多线程连接下载
    // 响应的格式是:
    // Accept-Ranges: bytes
    response.setHeader("Accept-Ranges", "bytes"); long p = 0;
    long l = 0;
    // l = raf.length();
    l = f.length(); // 如果是第一次下,还没有断点续传,状态是默认的 200,无需显式设置
    // 响应的格式是:
    // HTTP/1.1 200 OK if (request.getHeader("Range") != null) // 客户端请求的下载的文件块的开始字节
    {
    // 如果是下载文件的范围而不是全部,向客户端声明支持并开始文件块下载
    // 要设置状态
    // 响应的格式是:
    // HTTP/1.1 206 Partial Content
    response
    .setStatus(javax.servlet.http.HttpServletResponse.SC_PARTIAL_CONTENT);// 206 // 从请求中得到开始的字节
    // 请求的格式是:
    // Range: bytes=[文件块的开始字节]-
    p = Long.parseLong(request.getHeader("Range").replaceAll(
    "bytes=", "").replaceAll("-", ""));
    } // 下载的文件(或块)长度
    // 响应的格式是:
    // Content-Length: [文件的总大小] - [客户端请求的下载的文件块的开始字节]
    response.setHeader("Content-Length", new Long(l - p).toString()); if (p != 0) {
    // 不是从最开始下载,
    // 响应的格式是:
    // Content-Range: bytes [文件块的开始字节]-[文件的总大小 - 1]/[文件的总大小]
    response.setHeader("Content-Range", "bytes "
    + new Long(p).toString() + "-"
    + new Long(l - 1).toString() + "/"
    + new Long(l).toString());
    } // response.setHeader("Connection", "Close"); //如果有此句话不能用 IE 直接下载 // 使客户端直接下载
    // 响应的格式是:
    // Content-Type: application/octet-stream
    response.setContentType("application/octet-stream"); // 为客户端下载指定默认的下载文件名称
    // 响应的格式是:
    // Content-Disposition: attachment;filename="[文件名]"
    // response.setHeader("Content-Disposition",
    // "attachment;filename=\"" + s.substring(s.lastIndexOf("\\") + 1) +
    // "\""); //经测试 RandomAccessFile 也可以实现,有兴趣可将注释去掉,并注释掉
    // FileInputStream 版本的语句
    response.setHeader("Content-Disposition", "attachment;filename=\""
    + f.getName() + "\""); // raf.seek(p);
    fis.skip(p); byte[] b = new byte[1024];
    int i; // while ( (i = raf.read(b)) != -1 ) //经测试 RandomAccessFile
    // 也可以实现,有兴趣可将注释去掉,并注释掉 FileInputStream 版本的语句
    while ((i = fis.read(b)) != -1) {
    response.getOutputStream().write(b, 0, i);
    }
    // raf.close();//经测试 RandomAccessFile 也可以实现,有兴趣可将注释去掉,并注释掉
    // FileInputStream 版本的语句
    fis.close();
    }catch(Exception e){
    e.printStackTrace();

    }
    } else {
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out
    .println("<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">");
    out.println("</head>");
    out.println("<body>");
    out.println("出错啦!!!");
    out.println("</body>");
    out.println("</html>");
    } } public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { doGet(request, response); }}
    //这是一个下载的servlet,向其传入文件名“file”即可实现任何格式文件的下载
    //来源于网络
      

  2.   

    $mimetypes = array(
        'ez'        => 'application/andrew-inset',
        'hqx'        => 'application/mac-binhex40',
        'cpt'        => 'application/mac-compactpro',
        'doc'        => 'application/msword',
        'bin'        => 'application/octet-stream',
        'dms'        => 'application/octet-stream',
        'lha'        => 'application/octet-stream',
        'lzh'        => 'application/octet-stream',
        'exe'        => 'application/octet-stream',
        'class'        => 'application/octet-stream',
        'so'        => 'application/octet-stream',
        'dll'        => 'application/octet-stream',
        'oda'        => 'application/oda',
        'pdf'        => 'application/pdf',
        'ai'        => 'application/postscript',
        'eps'        => 'application/postscript',
        'ps'        => 'application/postscript',
        'smi'        => 'application/smil',
        'smil'        => 'application/smil',
        'mif'        => 'application/vnd.mif',
        'xls'        => 'application/vnd.ms-excel',
        'ppt'        => 'application/vnd.ms-powerpoint',
        'wbxml'        => 'application/vnd.wap.wbxml',
        'wmlc'        => 'application/vnd.wap.wmlc',
        'wmlsc'        => 'application/vnd.wap.wmlscriptc',
        'bcpio'        => 'application/x-bcpio',
        'vcd'        => 'application/x-cdlink',
        'pgn'        => 'application/x-chess-pgn',
        'cpio'        => 'application/x-cpio',
        'csh'        => 'application/x-csh',
        'dcr'        => 'application/x-director',
        'dir'        => 'application/x-director',
        'dxr'        => 'application/x-director',
        'dvi'        => 'application/x-dvi',
        'spl'        => 'application/x-futuresplash',
        'gtar'        => 'application/x-gtar',
        'hdf'        => 'application/x-hdf',
        'js'        => 'application/x-javascript',
        'skp'        => 'application/x-koan',
        'skd'        => 'application/x-koan',
        'skt'        => 'application/x-koan',
        'skm'        => 'application/x-koan',
        'latex'        => 'application/x-latex',
        'nc'        => 'application/x-netcdf',
        'cdf'        => 'application/x-netcdf',
        'sh'        => 'application/x-sh',
        'shar'        => 'application/x-shar',
        'swf'        => 'application/x-shockwave-flash',
        'sit'        => 'application/x-stuffit',
        'sv4cpio'    => 'application/x-sv4cpio',
        'sv4crc'    => 'application/x-sv4crc',
        'tar'        => 'application/x-tar',
        'tcl'        => 'application/x-tcl',
        'tex'        => 'application/x-tex',
        'texinfo'    => 'application/x-texinfo',
        'texi'        => 'application/x-texinfo',
        't'            => 'application/x-troff',
        'tr'        => 'application/x-troff',
        'roff'        => 'application/x-troff',
        'man'        => 'application/x-troff-man',
        'me'        => 'application/x-troff-me',
        'ms'        => 'application/x-troff-ms',
        'ustar'        => 'application/x-ustar',
        'src'        => 'application/x-wais-source',
        'xhtml'        => 'application/xhtml+xml',
        'xht'        => 'application/xhtml+xml',
        'zip'        => 'application/zip',
        'au'        => 'audio/basic',
        'snd'        => 'audio/basic',
        'mid'        => 'audio/midi',
        'midi'        => 'audio/midi',
        'kar'        => 'audio/midi',
        'mpga'        => 'audio/mpeg',
        'mp2'        => 'audio/mpeg',
        'mp3'        => 'audio/mpeg',
        'aif'        => 'audio/x-aiff',
        'aiff'        => 'audio/x-aiff',
        'aifc'        => 'audio/x-aiff',
        'm3u'        => 'audio/x-mpegurl',
        'ram'        => 'audio/x-pn-realaudio',
        'rm'        => 'audio/x-pn-realaudio',
        'rpm'        => 'audio/x-pn-realaudio-plugin',
        'ra'        => 'audio/x-realaudio',
        'wav'        => 'audio/x-wav',
        'pdb'        => 'chemical/x-pdb',
        'xyz'        => 'chemical/x-xyz',
        'bmp'        => 'image/bmp',
        'gif'        => 'image/gif',
        'ief'        => 'image/ief',
        'jpeg'        => 'image/jpeg',
        'jpg'        => 'image/jpeg',
        'jpe'        => 'image/jpeg',
        'png'        => 'image/png',
        'tiff'        => 'image/tiff',
        'tif'        => 'image/tiff',
        'djvu'        => 'image/vnd.djvu',
        'djv'        => 'image/vnd.djvu',
        'wbmp'        => 'image/vnd.wap.wbmp',
        'ras'        => 'image/x-cmu-raster',
        'pnm'        => 'image/x-portable-anymap',
        'pbm'        => 'image/x-portable-bitmap',
        'pgm'        => 'image/x-portable-graymap',
        'ppm'        => 'image/x-portable-pixmap',
        'rgb'        => 'image/x-rgb',
        'xbm'        => 'image/x-xbitmap',
        'xpm'        => 'image/x-xpixmap',
        'xwd'        => 'image/x-xwindowdump',
        'igs'        => 'model/iges',
        'iges'        => 'model/iges',
        'msh'        => 'model/mesh',
        'mesh'        => 'model/mesh',
        'silo'        => 'model/mesh',
        'wrl'        => 'model/vrml',
        'vrml'        => 'model/vrml',
        'css'        => 'text/css',
        'html'        => 'text/html',
        'htm'        => 'text/html',
        'asc'        => 'text/plain',
        'txt'        => 'text/plain',
        'rtx'        => 'text/richtext',
        'rtf'        => 'text/rtf',
        'sgml'        => 'text/sgml',
        'sgm'        => 'text/sgml',
        'tsv'        => 'text/tab-separated-values',
        'wml'        => 'text/vnd.wap.wml',
        'wmls'        => 'text/vnd.wap.wmlscript',
        'etx'        => 'text/x-setext',
        'xsl'        => 'text/xml',
        'xml'        => 'text/xml',
        'mpeg'        => 'video/mpeg',
        'mpg'        => 'video/mpeg',
        'mpe'        => 'video/mpeg',
        'qt'        => 'video/quicktime',
        'mov'        => 'video/quicktime',
        'mxu'        => 'video/vnd.mpegurl',
        'avi'        => 'video/x-msvideo',
        'movie'        => 'video/x-sgi-movie',
        'ice'        => 'x-conference/x-cooltalk',
    );