国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

java實現簡單圖片上傳下載功能

2024-07-14 08:42:34
字體:
來源:轉載
供稿:網友

本文實例為大家分享了java實現簡單圖片上傳下載的具體代碼,供大家參考,具體內容如下

1.首先在上傳圖片界面:將form表單的enctype改為:multipart/form-data

2.定義一個實體類用來將存放圖片存放的路徑存入到mysql中private String imgpath;

3.在spring容器中注入處理圖片的解析器

<bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 設置默認編碼 -->     <property name="defaultEncoding" value="utf-8"></property>     <!-- 上傳圖片最大大小5M-->      <property name="maxUploadSize" value="5242440"></property> </bean>

4.在controller層接收的時候需要用 @RequestParam("file") CommonsMultipartFile file來接收,如果是多個圖片就是@RequestParam("file") CommonsMultipartFile[] files來接收

5.通過工具類處理返回要存入實體類的圖片的路徑

public class FileUpUtil {  /** * 上傳多個文件或圖片上傳在項目路徑下的img文件夾在 * !!!!!!重新部署項目實效,因為文件夾被刪除 * @param files * @param request * @return */ public static List<String> upfiles(CommonsMultipartFile files[],HttpServletRequest request){  List<String> list = new ArrayList<String>();      // 獲得項目的路徑      ServletContext sc = request.getSession().getServletContext();      // 上傳位置      String path = sc.getRealPath("/img") + File.separatorChar; // 設定文件保存的目錄      File f = new File(path);      if (!f.exists())        f.mkdirs();          for (int i = 0; i < files.length; i++) {        // 獲得原始文件名        String fileName = files[i].getOriginalFilename();        System.out.println("原始文件名:" + fileName);        // 新文件名        String newFileName = UUID.randomUUID() + fileName;        if (!files[i].isEmpty()) {          try {            FileOutputStream fos = new FileOutputStream(path                + newFileName);            InputStream in = files[i].getInputStream();            int b = 0;            while ((b = in.read()) != -1) {              fos.write(b);            }            fos.close();            in.close();          } catch (Exception e) {            e.printStackTrace();          }        }        System.out.println("上傳圖片到:" + path + newFileName);        list.add("img/"+newFileName);     }      return list; } /** * 上傳一個文件或圖片 * 上傳多個文件或圖片上傳在項目路徑下的img文件夾在 * !!!!!!重新部署項目實效,因為文件夾被刪除 * @param file * @param request * @return */ public static String upfile(CommonsMultipartFile file,HttpServletRequest request){  // 獲得項目的路徑     ServletContext sc = request.getSession().getServletContext();     // 上傳位置     String path = sc.getRealPath("/img") + File.separatorChar; // 設定文件保存的目錄     File f = new File(path);     if (!f.exists())       f.mkdirs();       // 獲得原始文件名       String fileName = file.getOriginalFilename();       System.out.println("原始文件名:" + fileName);       // 新文件名       String newFileName = UUID.randomUUID() + fileName;       if (!file.isEmpty()) {         try {           FileOutputStream fos = new FileOutputStream(path               + newFileName);           InputStream in = file.getInputStream();           int b = 0;           while ((b = in.read()) != -1) {             fos.write(b);           }           fos.close();           in.close();         } catch (Exception e) {           e.printStackTrace();         }       }       System.out.println("上傳圖片到:" + path + newFileName);       return "img/"+newFileName; }  /** * 下載 * @param request * @param response * @param filename * @return */ public static void downFile(HttpServletRequest request,       HttpServletResponse response,String filename) {     // 得到要下載的文件名     String fileName = filename.substring(4);    try {       fileName = new String(fileName.getBytes("iso8859-1"), "UTF-8");       // 獲取上傳文件的目錄       ServletContext sc = request.getSession().getServletContext();       // 上傳位置       String fileSaveRootPath = sc.getRealPath("/img");               System.out.println(fileSaveRootPath + "//" + fileName);       // 得到要下載的文件       File file = new File(fileSaveRootPath + "//" + fileName);              // 如果文件不存在       if (!file.exists()) {         request.setAttribute("message", "您要下載的資源已被刪除!!");         System.out.println("您要下載的資源已被刪除!!");         return ;       }       // 處理文件名       String realname = fileName.substring(fileName.indexOf("_") + 1);       // 設置響應頭,控制瀏覽器下載該文件       response.setHeader("content-disposition", "attachment;filename="           + URLEncoder.encode(realname, "UTF-8"));       // 讀取要下載的文件,保存到文件輸入流       FileInputStream in = new FileInputStream(fileSaveRootPath + "//" + fileName);       // 創建輸出流       OutputStream out = response.getOutputStream();       // 創建緩沖區       byte buffer[] = new byte[1024];       int len = 0;       // 循環將輸入流中的內容讀取到緩沖區當中       while ((len = in.read(buffer)) > 0) {         // 輸出緩沖區的內容到瀏覽器,實現文件下載         out.write(buffer, 0, len);       }       // 關閉文件輸入流       in.close();       // 關閉輸出流       out.close();     } catch (Exception e) {     }   } }

6.存入之后在jsp頁面通過img標簽顯示<img alt="img" src="//數據庫中存入的路徑"  width="100">

7.下載就是將圖片的路徑傳入controller層中一個方法,調用工具類中的downFile方法,就可以了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 堆龙德庆县| 鱼台县| 桑日县| 大洼县| 大新县| 吉林市| 太湖县| 大石桥市| 施秉县| 沈阳市| 五台县| 兴文县| 许昌市| 社旗县| 铜梁县| 新昌县| 玉屏| 沐川县| 鸡泽县| 常德市| 奈曼旗| 龙口市| 罗平县| 康保县| 定远县| 吴江市| 安庆市| 会同县| 云梦县| 文成县| 东乌| 延边| 金川县| 怀集县| 鸡西市| 尼勒克县| 东丰县| 阿拉善右旗| 潮州市| 阳信县| 肇庆市|