一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - javaweb上傳下載實例完整版解析(下)

javaweb上傳下載實例完整版解析(下)

2020-08-01 15:16求上進的程序媛 Java教程

這篇文章主要為大家詳細解析了javaweb上傳下載實例,本文重點在于文件下載功能的實現,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一.顯示下載的文件資源

  要將Web應用系統中的文件資源提供給用戶進行下載,首先我們要有一個頁面列出上傳文件目錄下的所有文件,當用戶點擊文件下載超鏈接時就進行下載操作,編寫一個ListFileServlet,用于列出Web應用系統中所有下載文件。

1.1 文件下載頁面
download.html代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!DOCTYPE HTML>
<html>
<head>
   <title>下載文件顯示頁面</title>
</head>
 
<body>
  <div id="fileName"></div>
</body>
<script >
$(function(){
  download();
});
function download(){
  $.ajax({
      url: 'cloud/load/download',
      type: 'POST', 
      dataType:'JSON',
      cache: false,
      processData: false,
      contentType: false,
      success : function(date){
       var file="";
       $.each(date,function(key,values){
        var newKey = "/D:/Download/"+key;
        file += "<div>"+key+"&nbsp;&nbsp;"+"<a href='cloud/load/downloadFile?fileName="+key+"'>"+"下載"+"</a>"+"</div>"+"<br>";
        $(values).each(function(){
         file+="\t"+this;
        });
 
       });
       alert("success");
   },
   error : function(e){
    alert("error");
   }
   });
 }
</script>
</html>

1.2 controller

?
1
2
3
4
5
6
7
@RequestMapping(value = "/download", method = RequestMethod.POST)
@ResponseBody
  public Map<String,String> download(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws ServletException, IOException{
 
  Map<String,String> map = fileLoadService.doGet(request, response);
  return map;
}

1.3 service

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
  * 文件下載顯示
  * @ClassName: FileLoadServiceImpl
  * @throws IOException
  * @throws ServletException
  */
 @Override
public Map<String,String> doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
  //獲取上傳文件的目錄
  String uploadFilePath = "/D:/Download/";
  //存儲要下載的文件名
  Map<String,String> fileNameMap = new HashMap<String,String>();
  //遞歸遍歷filepath目錄下的所有文件和目錄,將文件的文件名存儲到map集合中
  listfile(new File(uploadFilePath),fileNameMap);
  return fileNameMap;
 
 
public void listfile(File file,Map<String,String> map){
  //如果file代表的不是一個文件,而是一個目錄
  if(!file.isFile()){
    //列出該目錄下的所有文件和目錄
    File files[] = file.listFiles();
    //遍歷files[]數組
    for(File f : files){
    //遞歸
     listfile(f,map);
   }
   }else{
     String realName = file.getName().substring(file.getName().indexOf("_")+1);
     //file.getName()得到的是文件的原始名稱,這個名稱是唯一的,因此可以作為key,realName是處理過后的名稱,有可能會重復
     map.put(file.getName(), realName);
   }
}
 
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}

二.下載顯示的文件資源

2.1 controller

?
1
2
3
4
5
6
@RequestMapping(value = "/downloadFile", method = RequestMethod.GET)
@ResponseBody
public void downloadFile(HttpServletRequest request, HttpServletResponse response, ModelMap model) throws ServletException, IOException{
    String filename =request.getParameter("fileName");
    fileLoadService.doGetFile(request, response ,filename);
  }

2.2 service

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
   /**
   * 下載文件到本地 start
   */
  @Override
  public void doGetFile(HttpServletRequest request, HttpServletResponse response,String filename) throws ServletException,IOException {
  //得到要下載的文件名
   String fileName = filename;
   fileName = new String(fileName.getBytes("iso8859-1"),"UTF-8");
   String fileSaveRootPath="/D:/Download";
   File file = new File(fileSaveRootPath + "/" + fileName);
   //如果文件不存在
   if(!file.exists()){
     request.setAttribute("message", "您要下載的資源已被刪除?。?quot;);
     return;
   }
   //處理文件名
   String realname = fileName.substring(fileName.indexOf("_")+1);
   //設置響應頭,控制瀏覽器下載該文件
   response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
  InputStream fis = new BufferedInputStream(new FileInputStream(fileSaveRootPath + "\\" + fileName));
  byte[] buffer = new byte[fis.available()];
  fis.read(buffer); //讀取文件流
  fis.close();
  response.reset(); //重置結果集
  response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
  response.addHeader("Content-Length", "" + file.length()); //返回頭 文件大小
  response.setContentType("application/octet-stream");  //設置數據種類
  OutputStream os = new BufferedOutputStream(response.getOutputStream());
  os.write(buffer); // 輸出文件
  os.flush();
  os.close();
  }
 
public void doPostFile(HttpServletRequest request, HttpServletResponse response,String filename)throws ServletException, IOException {
    doGetFile(request, response,filename);
}

以上文件下載完成。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成品人视频免费观看 | 91久久精品国产一区二区 | 国产成人精品一区二三区在线观看 | 明星ai智能人脸替换造梦在线播放 | 国产做a爰片久久毛片 | 国产高清一区二区 | 久久午夜夜伦痒痒想咳嗽P 久久无码AV亚洲精品色午夜麻豆 | 给我视频免费看 | 亚州日韩精品AV片无码中文 | 免费人成网址在线观看国内 | 免费一级欧美片在线观看 | 青草国产福利视频免费观看 | 摔跤成人黄版 | 性姿势女人嗷嗷叫图片 | 成人精品一区二区三区中文字幕 | 亚洲AV综合99一二三四区 | 国产农村乱子伦精品视频 | 任我淫| 91久久偷偷做嫩草影院免费 | 亚洲天天综合网 | 免费大片 | 欧美人与禽杂交大片 | 男人和女人全黄一级毛片 | 波多野结衣 在线 | 精品国产区一区二区三区在线观看 | 四虎影院在线免费播放 | 天堂男人在线 | 欧美洲大黑香蕉在线视频 | avtt在线播放 | 99在线视频精品 | 女人被爽到呻吟娇喘的视频动态图 | 日本一区免费观看 | 牛牛影院成人免费网页 | 美女厕所尿尿擦逼 | 青涩体验在线观看未删减 | www亚洲视频| 日韩毛片在线影视 | 暖暖的视频完整视频韩国免费 | 国产成人综合亚洲一区 | 高清视频在线观看+免费 | 关晓彤一级做a爰片性色毛片 |