最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年01月24日 16:25:50   作者:求上進的程序媛  
這篇文章主要為大家詳細解析了javaweb上傳下載實例,本文重點在于文件下載功能的實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下

一.顯示下載的文件資源

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

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

<!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

@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

/**
  * 文件下載顯示
  * @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[]數(shù)組
    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

@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

   /**
   * 下載文件到本地 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", "您要下載的資源已被刪除!!");
     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");  //設置數(shù)據(jù)種類 
  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);
}

以上文件下載完成。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • maven之packaging標簽的使用

    maven之packaging標簽的使用

    這篇文章主要介紹了maven之packaging標簽的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Spring與MyBatis集成?AOP整合PageHelper插件的操作過程

    Spring與MyBatis集成?AOP整合PageHelper插件的操作過程

    Spring與MyBatis集成的主要目的是為了提供更強大的數(shù)據(jù)訪問和事務管理能力,以及簡化配置和提高開發(fā)效率,這篇文章主要介紹了Spring與MyBatis集成AOP整合PageHelper插件,需要的朋友可以參考下
    2023-08-08
  • SpringBoot如何接收前端傳遞參數(shù)

    SpringBoot如何接收前端傳遞參數(shù)

    這篇文章主要介紹了SpringBoot如何接收前端傳遞參數(shù),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • Mybatis的TypeHandler加解密數(shù)據(jù)實現(xiàn)

    Mybatis的TypeHandler加解密數(shù)據(jù)實現(xiàn)

    在我們數(shù)據(jù)庫中有些時候會保存一些用戶的敏感信息,所以就需要對這些數(shù)據(jù)進行加密,那么本文就介紹了Mybatis的TypeHandler加解密數(shù)據(jù)實現(xiàn),感興趣的可以了解一下
    2021-06-06
  • 詳解java中static關鍵詞的作用

    詳解java中static關鍵詞的作用

    這篇文章主要介紹了java中static關鍵詞的作用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 為SpringBoot服務添加HTTPS證書的方法

    為SpringBoot服務添加HTTPS證書的方法

    這篇文章主要介紹了為SpringBoot服務添加HTTPS證書的方法,幫助大家更好的理解和使用springBoot框架,感興趣的朋友可以了解下
    2020-10-10
  • SpringSecurity之SecurityContextHolder使用解讀

    SpringSecurity之SecurityContextHolder使用解讀

    這篇文章主要介紹了SpringSecurity之SecurityContextHolder使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 淺談Java編程中的內(nèi)存泄露情況

    淺談Java編程中的內(nèi)存泄露情況

    這篇文章主要介紹了Java編程中的內(nèi)存泄露情況,牽扯到JVM的垃圾回收相關知識,需要的朋友可以參考下
    2015-10-10
  • Java修改Integer變量值遇到的問題及解決

    Java修改Integer變量值遇到的問題及解決

    這篇文章主要介紹了Java修改Integer變量值遇到的問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • idea導入springboot項目沒有maven的解決

    idea導入springboot項目沒有maven的解決

    這篇文章主要介紹了idea導入springboot項目沒有maven的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評論

九龙县| 禄丰县| 谢通门县| 忻城县| 武隆县| 阳城县| 怀集县| 循化| 闸北区| 德昌县| 夏邑县| 类乌齐县| 博客| 铜陵市| 阿鲁科尔沁旗| 四子王旗| 神农架林区| 洱源县| 松滋市| 镇远县| 商丘市| 沈阳市| 尼玛县| 岳阳市| 南川市| 肇源县| 张北县| 新巴尔虎左旗| 西丰县| 多伦县| 浑源县| 清河县| 建湖县| 德江县| 鄂托克旗| 新绛县| 巫山县| 凤台县| 和平县| 宜兰市| 松阳县|