2018

“放到桌面”的Servlet实现

复习下Servlet下载文件,

  1. responseContentType设置成application/xxxx的时候呢,浏览器会默认启动下载,而不是试图打开。
  2. 通过给httpHeader里面加入内容描述Content-Disposition来告知浏览器文件名称等信息。
    中文时,URLEncoder.encode下下更健康。
  3. 如果要通过Response拿到的输出流写中文出去的话,要先设置 response.setCharacterEncoding("UTF-8");,写成小写的utf-8不好使?
  4. 通过response.setConetentLength(Long)告诉浏览器response要写出的文件有多少字节。不设置的话就是不知道多少,下完为此,没有进度条之类的东东。
/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // System.out.println("I'm get your request!!");
    response.setCharacterEncoding("UTF-8");
    response.setContentType("application/txt");
    response.addHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode("中国通号门户.url","utf-8"));
    Writer w = response.getWriter();
    w.write("[InternetShortcut]\r\n"
            + "URL=http://w3.crsc.isc\r\n"
            + "IDList=\r\n"
            + "HotKey=0\r\n"
            + "IconFile=%windir%\\system32\\SHELL32.dll\r\n"
            + "IconIndex=130\r\n"
            + "[{000214A0-0000-0000-C000-000000000046}]\r\n"
            + "Prop3=19,2");
    w.close();
    
}

大家都知道,像下面这种内容,写入到txt文本中,然后更改文件扩展名为.url就直接是一个url快速链接了。

[InternetShortcut]
URL=http://w3.crsc.isc
IDList=
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2

所以呢,只要有Servlet里面把这些内容用txt的格式通过response写出来就好了,然后给一个明确的文件名与后缀就好了。

posted @ 2014-09-16 11:15  尼枚哉  阅读(1692)  评论(1编辑  收藏  举报

一件事,坚持做下去,会让你看得到方向。