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

java web上傳文件和下載文件代碼片段分享

 更新時間:2017年01月23日 10:04:54   作者:夏詩鳶  
這篇文章主要為大家詳細介紹了java web上傳文件和下載文件代碼片段,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java web上傳文件和下載文件的具體代碼,供大家參考,具體內(nèi)容如下

 /**
  * Purpose:上傳文檔
  * 
  * @param req
  * @param fileTitle
  * @param fileType
  * @param fileDesc
  * @return
  */
 @RequestMapping("upload")
 public ModelAndView upload(HttpServletRequest req, String fileType, String fileDesc, String share) {
  UserAllInfo userAll = (UserAllInfo) req.getSession().getAttribute("userAll");
  ModelAndView mav = new ModelAndView();
  // 獲取文件的大小
  String fileSize = "";
  int length = req.getContentLength();
  //轉(zhuǎn)換成KB
  double len1 = (double) (Math.round((length / 1024) * 100)) / 100;
  //轉(zhuǎn)換成MB
  double len2 = (double) (Math.round((len1 / 1024) * 100)) / 100;
  if (len2 > 1) {
   fileSize = String.valueOf(len2) + "MB";
  } else {
   fileSize = String.valueOf(len1) + "KB";
  }
  //將請求轉(zhuǎn)換成處理文件的請求
  MultipartRequest mreq = (MultipartRequest) req;
  //文件上傳專用類
  MultipartFile mfile = mreq.getFile("uploadFile");

  // 得到上下文路徑
  String root = req.getSession().getServletContext().getRealPath("/");
  File dir = new File(root);
  // 獲取文件名和文件的mime類型
  String str = mfile.getOriginalFilename();
  String[] st = str.split("\\.");

  File savedFile = null;
  try {
   //在指定目錄中創(chuàng)建一個新的空文件,文件名稱加前綴"upload_"
   savedFile = File.createTempFile("upload_", mfile.getOriginalFilename(), dir);
   //將緩沖區(qū)的內(nèi)容復制到新創(chuàng)建的文件中
   FileCopyUtils.copy(mfile.getInputStream(), new FileOutputStream(savedFile));
  } catch (Exception e) {
   e.printStackTrace();
  }
  String path = savedFile.getPath();

  // 將文件的信息封裝在對象中
  FileInfo file = new FileInfo();
  if (userAll != null) {
   file.setUploadPersonId(userAll.getUser().getUserId());
  } else {
   mav.setViewName("login");
   return mav;
  }
  file.setFileName(st[0]);
  file.setFilePath(path);
  Date date = new Date();
  file.setUploadDate(date);
  file.setFileSize(fileSize);
  file.setFileType(fileType);
  file.setFileForm(st[1]);
  if ("superman".equals(userAll.getUser().getUserNumber())) {
   file.setFileShare("Y");
   file.setCheckFlag("Y");
  } else {
   file.setFileShare(share);
   file.setCheckFlag("N");
  }
  file.setDeleteFlag("N");
  file.setDownloadTimes(0);
  // 保存文件的信息
  boolean bool = fileSer.saveFile(file);
  String userNumber = userAll.getUser().getUserNumber();
  //設置跳轉(zhuǎn)界面
  mav.setViewName("jsp/person/upload");
  logSer.saveLog("用戶\"" + userNumber + "\"上傳文件\"" + file.getFileName() + "\"");
  mav.getModel().put("bool", bool);
  return mav;
 }

 /**
  * Purpose:下載文檔
  * 
  * @param fileId 文件id
  * @return
  */
 @RequestMapping("download")
 public void download(Integer fileId, HttpServletResponse resp) {
  FileInfo file = new FileInfo();
  //通過文件id獲取文件的基本信息
  file = fileSer.getFileById(fileId);

  // 根據(jù)文件后綴名設置文件的mime類型
  String mime = "application/";
  switch (file.getFileForm()) {
  case "doc":
   mime = mime + "msword";
   break;
  case "docx":
   mime = mime + "msword";
   break;
  case "pdf":
   mime = mime + "pdf";
   break;
  case "xls":
   mime = mime + "vnd.ms-excel";
  case "ppt":
   mime = mime + "vnd.ms-powerpoint";
   break;
  case "txt":
   mime = "text/plain";
   break;
  default:
   break;
  }
  resp.setContentType(mime);
  String fileName = file.getFileName();
  String name = "";
  try {
   // 將文件名使用utf-8編碼格式編碼,使其中的中文字符可以正常顯示
   name = URLEncoder.encode(fileName, "utf-8");
  } catch (UnsupportedEncodingException e1) {
   e1.printStackTrace();
  }

  // 彈框選擇保存路徑
  resp.setHeader("content-disposition", "attachment;filename=" + name + "." + file.getFileForm()
    + ";filename*=utf-8''" + name + "." + file.getFileForm());

  String filePath = file.getFilePath();
  InputStream is = null;
  OutputStream os = null;
  try {
   is = new BufferedInputStream(new FileInputStream(filePath));
   os = new BufferedOutputStream(resp.getOutputStream());
   byte[] buff = new byte[1024];
   @SuppressWarnings("unused")
   int count;
   while ((count = is.read(buff)) != -1) {
    os.write(buff);
   }
   //修改下載次數(shù)
   fileSer.update(fileId);
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   //最后,要記得關(guān)閉輸入流和輸出流
   if (is != null) {
    try {
     is.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
   if (os != null) {
    try {
     os.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }

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

相關(guān)文章

  • mybatis模糊查詢like語句該如何寫

    mybatis模糊查詢like語句該如何寫

    MyBatis模糊查詢通常使用LIKE關(guān)鍵字,結(jié)合concat函數(shù)拼接通配符%實現(xiàn),在MyBatis配置文件中,通過#{keyword}傳遞參數(shù),生成帶有通配符的查詢語句,MyBatis-Plus中,通過LambdaQueryWrapper類和like方法構(gòu)建模糊查詢條件,簡化查詢操作
    2024-09-09
  • Log4j關(guān)閉Spring和Hibernate日志打印方式

    Log4j關(guān)閉Spring和Hibernate日志打印方式

    這篇文章主要介紹了Log4j關(guān)閉Spring和Hibernate日志打印方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring Cloud @EnableFeignClients注解的屬性字段basePacka詳解

    Spring Cloud @EnableFeignClients注解的屬性字段basePacka詳解

    這篇文章主要介紹了Spring Cloud @EnableFeignClients注解的屬性字段basePacka詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 關(guān)于Java項目讀取resources資源文件路徑的那點事

    關(guān)于Java項目讀取resources資源文件路徑的那點事

    這篇文章主要介紹了關(guān)于Java項目讀取resources資源文件路徑的那點事,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java注解(annotation)簡述

    Java注解(annotation)簡述

    這篇文章主要介紹了使用java的注解(用在java類的方法上的注解)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-08-08
  • SpringBoot使用@Cacheable注解實現(xiàn)緩存功能流程詳解

    SpringBoot使用@Cacheable注解實現(xiàn)緩存功能流程詳解

    最近一直再學Spring Boot,在學習的過程中也有過很多疑問。為了解答自己的疑惑,也在網(wǎng)上查了一些資料,以下是對@Cacheable注解的一些理解
    2023-01-01
  • mybatis之如何獲取表中某一列的最大值

    mybatis之如何獲取表中某一列的最大值

    這篇文章主要介紹了mybatis之如何獲取表中某一列的最大值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 以Java代碼為例講解設計模式中的簡單工廠模式

    以Java代碼為例講解設計模式中的簡單工廠模式

    簡單來說,工廠模式就是按照需求來返回一個類型的對象,使用工廠模式的意義就是,如果對象的實例化與代碼依賴太大的話,不方便進行擴展和維護,使用工廠的目的就是使對象的實例化與主程序代碼就行解耦.來具體看一下:
    2016-05-05
  • Springboot開發(fā)之利用Docker和Kubernetes部署微服務

    Springboot開發(fā)之利用Docker和Kubernetes部署微服務

    這篇文章主要介紹了如何將Spring Boot開發(fā)的微服務通過Docker容器化,并使用Kubernetes進行部署和管理,幫助讀者掌握現(xiàn)代云原生應用的完整開發(fā)部署流程,有需要的可以了解下
    2025-03-03
  • 消息隊列 RabbitMQ 與 Spring 整合使用的實例代碼

    消息隊列 RabbitMQ 與 Spring 整合使用的實例代碼

    本篇文章主要介紹了消息隊列 RabbitMQ 與 Spring 整合使用的實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論

民权县| 嘉峪关市| 禹州市| 嘉禾县| 枣强县| 淮阳县| 大余县| 垣曲县| 仁布县| 石景山区| 光泽县| 高要市| 宜春市| 清远市| 兴义市| 丹棱县| 遂溪县| 闸北区| 杭锦后旗| 延吉市| 富锦市| 稷山县| 射洪县| 武冈市| 平阴县| 绥棱县| 凌云县| 抚州市| 衡水市| 洛南县| 休宁县| 杭锦旗| 庆城县| 抚松县| 托克逊县| 成武县| 大安市| 新丰县| 福清市| 云浮市| 商都县|