我用的是<a href="">加路径 现在txt文件啥的都是直接打开 不会弹出对话框 但是.xls会提示对话框 我希望是无论什么文件都提示 求代码

解决方案 »

  1.   

    给链接加个onclick事件。 点击后,访问你的servlet。同时把文件用户选择的文件路径传给servlet
    在servlet里面 用response对象实现文件下载的功能。
    参考 http://likeyi.iteye.com/blog/572381
      

  2.   

    我贴一段我做的给你吧。
    【JSP】
    <input type="button" name="" value="点击XXX" id="" onclick="downLoadFile(formName);" />
    function downLoadFile(formName){
      formName.action = "<%=path%>/ImportExcelServlet.do?op=downLoadFile&filename=xxx.xls";
    formName.submit();
    }
    【servlet】
    public void downLoadFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    javax.servlet.ServletOutputStream out = response.getOutputStream();
    String filepath=request.getRealPath("/") + "uploadfile/";
    String filename=new String(request.getParameter("filename").getBytes("ISO8859_1"),"utf-8").toString();
    java.io.File file = new java.io.File(filepath + filename);
    if (!file.exists()) {
    System.out.println(file.getAbsolutePath() + " 文件不存在!");
    return;
    }
    // 读取文件流
    java.io.FileInputStream fileInputStream = new java.io.FileInputStream(file);
    // 下载文件
    // 设置响应头和下载保存的文件名
    if (filename != null && filename.length() > 0) {
    response.setContentType("application/x-msdownload");
    response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("gb2312"),"iso8859-1") + "");
    if (fileInputStream != null) {
    int filelen = fileInputStream.available();
    //文件太大时内存不能一次读出,要循环
    byte a[] = new byte[filelen];
    fileInputStream.read(a);
    out.write(a);
    }
    fileInputStream.close();
    out.close();
    }
    }======可能有些路径的问题======