亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

基于SpringBoot實現(xiàn)圖片上傳與顯示

2019-11-26 09:42:56
字體:
來源:轉載
供稿:網友

本文為大家分享了SpringBoot實現(xiàn)圖片上傳與顯示的具體代碼,供大家參考,具體內容如下

SpringBoot實現(xiàn)圖片上傳與顯示:Demo地址

效果圖預覽

思路

  • 一般情況下都是將用戶上傳的圖片放到服務器的某個文件夾中,然后將圖片在服務器中的路徑存入數據庫。本Demo也是這樣做的。
  • 由于用戶自己保存的圖片文件名可能跟其他用戶同名造成沖突,因此本Demo選擇了使用UUID來生成隨機的文件名解決沖突。
  • 但是本Demo不涉及任何有關數據庫的操作,便于演示,就用原來的文件名。

步驟

pom相關依賴

  • 基于Spring boot當然是繼承了spring boot這不用多說
  • 具體依賴,主要是FreeMarker相關依賴為了展現(xiàn)頁面,習慣用JSP也可以添加JSP的依賴,只是為了展示頁面,這個不重要。
<dependencies> <!--FreeMarker模板視圖依賴-->    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-freemarker</artifactId>    </dependency>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>      <groupId>org.springframework.boot</groupId>      <artifactId>spring-boot-starter-test</artifactId>      <scope>test</scope>    </dependency></dependencies>

application.properties相關配置

除了視圖模板相關的配置,重點是要配置一下文件上傳的內存大小和文件上傳路徑

server.port=8102### FreeMarker 配置spring.freemarker.allow-request-override=false#Enable template caching.啟用模板緩存。spring.freemarker.cache=falsespring.freemarker.check-template-location=truespring.freemarker.charset=UTF-8spring.freemarker.content-type=text/htmlspring.freemarker.expose-request-attributes=falsespring.freemarker.expose-session-attributes=falsespring.freemarker.expose-spring-macro-helpers=false#設置面板后綴spring.freemarker.suffix=.ftl# 設置單個文件最大內存multipart.maxFileSize=50Mb# 設置所有文件最大內存multipart.maxRequestSize=50Mb# 自定義文件上傳路徑web.upload-path=E:/Develop/Files/Photos/

生成文件名

不準備生成文件名的可以略過此步驟

package com.wu.demo.fileupload.demo.util;public class FileNameUtils {  /**   * 獲取文件后綴   * @param fileName   * @return   */  public static String getSuffix(String fileName){    return fileName.substring(fileName.lastIndexOf("."));  }  /**   * 生成新的文件名   * @param fileOriginName 源文件名   * @return   */  public static String getFileName(String fileOriginName){    return UUIDUtils.getUUID() + FileNameUtils.getSuffix(fileOriginName);  }}
import java.util.UUID;/** * 生成文件名 */public class UUIDUtils {  public static String getUUID(){    return UUID.randomUUID().toString().replace("-", "");  }}

文件上傳工具類

package com.wu.demo.fileupload.demo.util;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOException;/** * 文件上傳工具包 */public class FileUtils {  /**   *   * @param file 文件   * @param path 文件存放路徑   * @param fileName 源文件名   * @return   */  public static boolean upload(MultipartFile file, String path, String fileName){    // 生成新的文件名    //String realPath = path + "/" + FileNameUtils.getFileName(fileName);    //使用原文件名    String realPath = path + "/" + fileName;    File dest = new File(realPath);    //判斷文件父目錄是否存在    if(!dest.getParentFile().exists()){      dest.getParentFile().mkdir();    }    try {      //保存文件      file.transferTo(dest);      return true;    } catch (IllegalStateException e) {      // TODO Auto-generated catch block      e.printStackTrace();      return false;    } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();      return false;    }  }}

Controller

package com.wu.demo.fileupload.demo.controller;import com.wu.demo.fileupload.demo.util.FileUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.core.io.ResourceLoader;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletResponse;import java.util.Map;@Controllerpublic class TestController {  private final ResourceLoader resourceLoader;  @Autowired  public TestController(ResourceLoader resourceLoader) {    this.resourceLoader = resourceLoader;  }  @Value("${web.upload-path}")  private String path;  /**   * 跳轉到文件上傳頁面   * @return   */  @RequestMapping("test")  public String toUpload(){    return "test";  }  /**   *   * @param file 要上傳的文件   * @return   */  @RequestMapping("fileUpload")  public String upload(@RequestParam("fileName") MultipartFile file, Map<String, Object> map){    // 要上傳的目標文件存放路徑    String localPath = "E:/Develop/Files/Photos";    // 上傳成功或者失敗的提示    String msg = "";    if (FileUtils.upload(file, localPath, file.getOriginalFilename())){      // 上傳成功,給出頁面提示      msg = "上傳成功!";    }else {      msg = "上傳失??!";    }    // 顯示圖片    map.put("msg", msg);    map.put("fileName", file.getOriginalFilename());    return "forward:/test";  }  /**   * 顯示單張圖片   * @return   */  @RequestMapping("show")  public ResponseEntity showPhotos(String fileName){    try {      // 由于是讀取本機的文件,file是一定要加上的, path是在application配置文件中的路徑      return ResponseEntity.ok(resourceLoader.getResource("file:" + path + fileName));    } catch (Exception e) {      return ResponseEntity.notFound().build();    }  }}

頁面

頁面主要是from表單和下面的 <img src="/show?fileName=${fileName}" /> ,其余都是細節(jié)。

<!DOCTYPE html><head>  <meta charset="UTF-8" />  <title>圖片上傳Demo</title></head><body><h1 >圖片上傳Demo</h1><form action="fileUpload" method="post" enctype="multipart/form-data">  <p>選擇文件: <input type="file" name="fileName"/></p>  <p><input type="submit" value="提交"/></p></form><#--判斷是否上傳文件--><#if msg??>  <span>${msg}</span><br><#else >  <span>${msg!("文件未上傳")}</span><br></#if><#--顯示圖片,一定要在img中的src發(fā)請求給controller,否則直接跳轉是亂碼--><#if fileName??><img src="/show?fileName=${fileName}" style="width: 200px"/><#else><img src="/show" style="width: 100px"/></#if></body></html>

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
在线观看中文字幕视频| 日韩欧美在线观看免费| 久久免费精彩视频| 国产精品极品尤物在线观看| 欧美亚洲国产一区在线观看网站| 日本va欧美va欧美va精品| 亚洲天堂网站在线| 亚洲欧美另类图片| 国产视频一区二区在线| 一级黄色大片儿| 最新亚洲伊人网| 亚洲一级片网站| 狠狠色2019综合网| 精品国产黄a∨片高清在线| 日韩精品大片| 91精品国产综合久久久久久久久久| 一区二区三区日韩在线| jvid福利写真一区二区三区| xxxxxhd亚洲人hd| 欧美男男激情videos| 久久精品人人做人人爽人人| 伊人影院久久| 中文字幕亚洲综合| 福利视频网站导航| 亚洲最新在线视频| jizz一区二区三区| 亚洲开发第一视频在线播放| 免费在线观看一级片| 国产精品成人品| 免费成人蒂法| 毛片免费在线播放| 亚洲精品一区二区二区| 国产无套内射久久久国产| 亚洲超丰满肉感bbw| 久久免费电影网| 亚洲激情社区| 亚洲第一区中文99精品| 国内毛片久久| 少妇高潮喷水久久久久久久久久| 91青青在线视频| 国产天堂av在线| 色999日韩自偷自拍美女| 5252色成人免费视频| 日本电影在线观看| 中文字幕在线观看视频www| 国产小视频国产精品| 久久久久久亚洲精品| 免费看黄色的视频| 依人在线免费视频| luxu259在线中文字幕| 欧美大片免费高清观看| 国产一卡二卡3卡4卡四卡在线| 美女爽到呻吟久久久久| 三上悠亚一区二区三区| 国产成人久久久精品一区| 黄色一级大片在线免费看国产| 自拍偷拍一区| 欧美日韩另类综合| 日韩欧美一二区| 国产伦精品一区二区三区视频网站| 欧美性高清videossexo| 欧美性受黑人性爽| 国产伦精品一区二区三区视频小说| 欧美性生活一级片| 精品视频在线免费看| 亚洲性猛交xxxxwww| 四虎影视永久免费在线观看一区二区三区| 国产精品99久久久久久董美香| 在线手机中文字幕| 激情伦成人综合小说| 99国产精品久久久久99打野战| 欧美人妖巨大在线| 翁止熄痒禁伦短文合集免费视频| 国产精品视频无码| 成人做爰69片免网站| 一二三区精品福利视频| 一区二区三区欧美在线| 亚洲精品v亚洲精品v日韩精品| 国模私拍在线观看| 成人精品视频一区二区三区| 26uuu成人| 久久久久久久久免费看无码| www黄在线观看| 在线一级成人| 91精品中文字幕一区二区三区| 丝袜美腿一区二区三区动态图| 久国内精品在线| 久久久久久尹人网香蕉| 麻豆国产尤物av尤物在线观看| 99热播精品免费| 国产欧美日韩91| 久久久久国产精品嫩草影院| 亚洲国产精品激情在线观看| 666av成人影院在线观看| 欧美激情欧美狂野欧美精品| 欧美a级理论片| 国产mv日韩mv欧美| 一区二区三区日韩在线观看| 成人涩涩网站| 91超薄丝袜肉丝一区二区| 免费成人av电影| 国产精品美女久久久久久不卡| 国产欧美小视频| 99久久久无码国产精品6| 日本女优在线视频一区二区| 亚洲精品久久久蜜桃动漫| 久本草在线中文字幕亚洲欧美| 97色在线观看| 日韩在线小视频| 精品人妻无码一区二区三区换脸| 国产精品久久久久久福利| 91日韩视频| 欧美国产日韩一区二区在线观看| 精品国产精品国产精品| 114国产精品久久免费观看| 四虎4545www国产精品| 国外成人在线视频| 久久精品视频2| 欧美性片在线观看| 国家队第一季免费高清在线观看| 五月天综合婷婷| 人妻丰满熟妇av无码区| 天堂av免费在线观看| 91传媒久久久| 亚洲天堂国产视频| 色94色欧美sute亚洲线路一久| 30一40一50老女人毛片| 国产免费观看久久| 一本一道久久a久久综合精品| 国产精品国产亚洲精品看不卡15| 国产成人精品久久| 少妇精品放荡导航| 欧美影片第一页| 国产主播自拍av| 午夜av免费在线观看| 日韩亚洲欧美中文三级| 亚洲精品第二页| 琪琪久久久久日韩精品| 色一情一乱一伦一区二区三欧美| 天天摸天天做天天爽| 亚洲美女激情视频| www,av在线| 成人精品亚洲人成在线| 亚洲人成网站影音先锋播放| 色综合久久88色综合天天6| bdsmchinese医疗折磨| 欧美大片xxxx| 91av免费看| 中文字幕欧美日韩在线| 日韩电影不卡一区| 国产伦精品一区二区三区免费优势| 加勒比婷婷色综合久久| 亚洲永久精品唐人导航网址| 亚洲久草视频| 亚洲精品少妇一区二区| 久久精品视频免费看| 国产日韩精品视频一区二区三区| 亚洲少妇诱惑| 国产极品美女高潮无套久久久| 一本色道久久综合亚洲精品不卡| 欧美日本一区二区在线观看| 久久人人爽人人片| 精品国产美女| 天天干天天操天天做| 欧美日本国产一区| 白白在线精品| 国产一伦一伦一伦| 国产h视频在线播放| 成人免费在线观看入口| 久草中文在线视频| 色综合天天天天做夜夜夜夜做| 久久99精品久久久久久久青青日本| 亚洲婷婷综合网| 亚洲网一区二区三区| 国产1区在线观看| 亚洲精品日产aⅴ| 亚洲成色在线综合网站2018站| 欧美乱偷一区二区三区在线| 精品免费av一区二区三区| 女人天堂亚洲aⅴ在线观看| 日韩精品免费在线播放| 成人在线免费在线观看| 精品一区二区三区影院在线午夜| 粉嫩的18在线观看极品精品| 97久久精品人人澡人人爽缅北| 亚洲精品电影在线观看| 亚洲乱码国产乱码精品精可以看| 国产日韩久久| 色婷婷精品久久二区二区蜜臀av| 四虎成人免费电影| 一区中文字幕| 91九色综合久久| 成年人在线看| 久久久无码一区二区三区| 亚洲成熟少妇视频在线观看| 久久综合社区| 色婷婷中文字幕| 蜜臀99久久精品久久久久小说| 成人免费视频视频| 免费久久久一本精品久久区| 欧美疯狂爱爱xxxxbbbb| 国产精品卡一卡二卡三| 91老司机福利在线| 亚洲中字在线| 亚洲欧美日韩图片| 国产精品99久久久久久宅男| 我要看黄色一级片| 黑人另类精品××××性爽| 成人在线视频免费播放| 久久久亚洲福利精品午夜| 在线国产福利网站| 欧美视频在线播放一区| 一级黄色免费毛片| 99热这里只有精品66| 久久综合九色综合97婷婷女人| 视频在线观看一区二区三区| 成人午夜视频在线观看| 一本一本久久a久久综合精品蜜桃| 亚洲视频小说图片| 在线成人免费| 国产99久久久国产精品潘金| 日韩乱码人妻无码中文字幕久久| 黄色激情在线视频| 天天操夜夜爽| 3d动漫成人在线| 午夜免费电影一区在线观看| 黑人精品无码一区二区三区AV| 亚洲高清视频的网址| 欧美人善zozσ性伦交| 国产视频青青| 国产日产亚洲系列最新| 九色精品美女在线| 96精品久久久久中文字幕| 搡老熟女老女人一区二区| 国产黄色在线网站| 日本一区二区三区四区| 中文字幕在线观看视频网站| 欧美在线视频一区| 色在线免费观看| 天堂在线观看av| 国产人成在线视频| 99久久免费观看| 欧美资源在线观看| 17videosex性欧美| 久久er这里只有精品| 国产精品国内免费一区二区三区| 国产成人av在线| а√天堂中文在线资源8| 视频在线观看成人| 黄色av片三级三级三级免费看| 精品久久无码中文字幕| 九七影院97影院理论片免费| 亚洲欧美另类小说| 色偷偷一区二区三区| 国产精品无码永久免费不卡| 色天天色综合| 欧美激情视频在线观看| 国产91在线播放九色快色| 亚洲欧美日韩中文字幕一区二区三区| 日本精品久久久| 一区二区高清视频在线观看| 亚洲一区二区三区日本久久九| 精品av久久久久电影| 久久久人成影片一区二区三区| 99久re热视频这里只有精品6| 一区二区三区免费在线| 杨幂毛片午夜性生毛片| 性色av一区二区三区免费| 在线免费观看黄色| 国产超碰人人模人人爽人人添| 日本在线观看视频一区| 成人美女视频在线观看| 中文字幕乱在线伦视频中文字幕乱码在线| 日本电影欧美片| www.91av| 秋霞伦理一区| 免费看日本黄色片| 在线码字幕一区| 精品一区二区国语对白| 欧美一级高清免费| 精品久久一区二区三区蜜桃| 亚洲第一免费网站| 黄色动漫在线观看| 久久久久亚洲无码| 韩日成人影院| 日韩黄色片视频| 成人女人免费毛片| 日本一区二区免费视频| 黑人巨大精品欧美一区二区| 亚洲一区二区精品| 夜夜爽夜夜爽精品视频| 这里只有精品在线播放| 欧美婷婷在线| 永久免费av无码网站性色av| 亚洲精品视频网上网址在线观看| 国产精品人人爱一区二区白浆| 精品视频二区| 亚洲精品日产精品乱码不卡| 熟妇人妻系列aⅴ无码专区友真希| 天堂俺去俺来也www久久婷婷| 91|九色|视频| 国产一二三四| 一级毛片久久久| 欧美日韩中文| 久久国产人妖系列| 精品人妻无码一区二区三区换脸| 污视频在线免费观看| 美女极度色诱视频www免费观看| 亚洲福利国产精品| 国产成人午夜视频网址| 亚洲欧美电影| 国产色综合网| 天天干天天爽天天射| 欧美下载看逼逼| 国内精品视频666| 男同互操gay射视频在线看| 国产日韩一区二区在线观看| 亚洲成a人片77777在线播放| 日本中文在线一区| 国产福利一区二区| 九九热在线视频免费观看| 日韩欧美在线播放| 国产成人精品日本亚洲专区61| 亚洲国产日韩欧美在线观看| www在线观看播放免费视频日本| 在线观看成人黄色| 久久先锋影音av| 电影一区二区三区久久免费观看|