shijiebao 2009-12-11 17:12
浏览 239
已采纳

Servlet 怎么支持迅雷的下载

写了一段servelt下载的代码,直接浏览器保存没有问题,如果是下载工具下载的话就会出错,而且下载的时候在迅雷里面显示的不是我代码里面指定的文件名,直接是servelt的名称;

servelt下载代码:
[code="java"]
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

    String path = request.getParameter("path");
    try {
        String fileName = request.getParameter("fileName").trim();
        int c = fileName.lastIndexOf(".");
        String name = fileName.substring(0, c > 0 ? c : fileName.length())
                + "."
                + path.substring(path.lastIndexOf(".") + 1, path.length());
        response.setContentType("application/octet-stream");
        response.setHeader("Content-Disposition", "attachement;filename=\""
                + new String(name.getBytes("GBK"), "ISO8859_1") + "\"");
        File file = new File(Const.getCurrentUtterlyPath() + path);
        if (!file.exists()) {
            throw new IOException(fileName + ",所下载的文件不存在!");
        }
        response.setContentLength(Integer.valueOf(String.valueOf(file.length())));
        InputStream fs = new FileInputStream(file);
        OutputStream os = response.getOutputStream();
        byte[] buff = new byte[1024];
        int readCount = 0;
        readCount = fs.read(buff);
        while (readCount != -1) {
            os.write(buff, 0, readCount);
            readCount = fs.read(buff);
        }
        if (fs != null) {
            fs.close();
        }
        if (os != null) {
            os.flush();
            os.close();
        }
        response.setStatus(response.SC_OK);
        response.flushBuffer();
    } catch (IOException e) {
        LOG.error("error: " + e.getMessage() + ",path: " + path);
        throw e;
    }
}

[/code]

  • 写回答

3条回答 默认 最新

  • iteye_13137 2009-12-12 17:02
    关注

    呼我,我把我写的源码传你!23568956

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败