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

SpringBoot上傳圖片的示例

 更新時(shí)間:2020年11月07日 09:02:18   作者:DayRain  
這篇文章主要介紹了SpringBoot上傳圖片的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下

說(shuō)明:通常項(xiàng)目中,如果圖片比較多的話,都會(huì)把圖片放在專(zhuān)門(mén)的服務(wù)器上,而不會(huì)直接把圖片放在業(yè)務(wù)代碼所在的服務(wù)器上。下面的例子只是為了學(xué)習(xí)基本流程,所以放在了本地。

1、單張圖片上傳

1.1、前端用表單提交

前端代碼:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<form method="post" action="/uploads" enctype="multipart/form-data">
 <input type="file" name="files" multiple>
 <input type="submit" value="上傳">
</form>
</body>
</html>

后端代碼;

SimpleDateFormat formatter = new SimpleDateFormat("/yyyy/MM/dd/");
 @RequestMapping("/upload")
 public String fileUpload(MultipartFile file, HttpServletRequest request){
  String time = formatter.format(new Date());
  //圖片上傳服務(wù)器后所在的文件夾
  String realPath = request.getServletContext().getRealPath("/img") + time;
  File folder = new File(realPath);
  if(!folder.exists())
   folder.mkdirs();

  //通常需要修改圖片的名字(防止重復(fù))
  String oldName = file.getOriginalFilename();
  String newName = UUID.randomUUID() + oldName.substring(oldName.lastIndexOf("."));

  try {
   //將文件放到目標(biāo)文件夾
   file.transferTo(new File(folder, newName));

   //通常還需要返回圖片的URL,為了通用性,需要?jiǎng)討B(tài)獲取協(xié)議,不要固定寫(xiě)死
   String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/img" + time + newName;
   return returnUrl;
  } catch (IOException e) {
   e.printStackTrace();
  }


  return null;
 }

1.2、前端用ajax提交

前端代碼與上面的略有不同,后臺(tái)代碼是一樣的。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>

</head>
<body>
 <input type="file" id="file">
 <input type="submit" value="上傳" onclick="uploadFile()">
<h1 id="result"></h1>
</body>

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">
</script>
<script>
function uploadFile() {
 var file = $("#file")[0].files[0];
 var formData = new FormData();
 formData.append("file", file);
 $.ajax({
  type:"post",
  url:"/upload",
  processData:false,
  contentType:false,
  data:formData,
  success:function (msg) {
   $("#result").html(msg);
  }
 })
}
</script>
</html>

2、多個(gè)圖片上傳

前端代碼:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<form method="post" action="/uploads" enctype="multipart/form-data">
 <input type="file" name="files" multiple>
 <input type="submit" value="上傳">
</form>
</body>
</html>

后臺(tái)代碼:

 @RequestMapping("/uploads")
 public String fileUploads(MultipartFile[]files, HttpServletRequest request){
  String time = formatter.format(new Date());
  //圖片上傳服務(wù)器后所在的文件夾
  String realPath = request.getServletContext().getRealPath("/img") + time;
  File folder = new File(realPath);
  if(!folder.exists())
   folder.mkdirs();

  for (MultipartFile file : files) {
   //通常需要修改圖片的名字(防止重復(fù))
   String oldName = file.getOriginalFilename();
   String newName = UUID.randomUUID() + oldName.substring(oldName.lastIndexOf("."));

   try {
    //將文件放到目標(biāo)文件夾
    file.transferTo(new File(folder, newName));

    //通常還需要返回圖片的URL,為了通用性,需要?jiǎng)討B(tài)獲取協(xié)議,不要固定寫(xiě)死
    String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/img" + time + newName;
    System.out.println(returnUrl);
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

  return null;
 }

3、問(wèn)題記錄

在后臺(tái)代碼中,有一行需要注意下:

 String realPath = request.getServletContext().getRealPath("/img") + time;

需要理解一下realPath究竟指的是什么。剛開(kāi)始測(cè)試的時(shí)候,圖片上傳成功后,后臺(tái)idea里找不到對(duì)應(yīng)的圖片,然后根據(jù)它返回的realPath,在C盤(pán)用戶目錄下的某個(gè)文件夾里找到了該圖片(user/AppData/....)。

shift+shift 全局搜索  getCommonDocumentRoot這個(gè)方法,點(diǎn)進(jìn)去,有個(gè)靜態(tài)數(shù)組:COMMON_DOC_ROOTS

 private static final String[] COMMON_DOC_ROOTS = new String[]{"src/main/webapp", "public", "static"};

發(fā)現(xiàn)默認(rèn)是指webapp下,或者根目錄下的public、static文件夾(與src并列)。然而這些目錄都沒(méi)有,所以Spring定向到了工程目錄以外的一個(gè)位置。

于是我在根目錄下新建一個(gè)static文件夾,再次上傳,果然有效了。

以上就是SpringBoot上傳圖片的示例的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot上傳圖片的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java動(dòng)態(tài)代理簡(jiǎn)單介紹

    Java動(dòng)態(tài)代理簡(jiǎn)單介紹

    動(dòng)態(tài)代理指的是,代理類(lèi)和目標(biāo)類(lèi)的關(guān)系在程序運(yùn)行的時(shí)候確定的,客戶通過(guò)代理類(lèi)來(lái)調(diào)用目標(biāo)對(duì)象的方法,是在程序運(yùn)行時(shí)根據(jù)需要?jiǎng)討B(tài)的創(chuàng)建目標(biāo)類(lèi)的代理對(duì)象。本文將通過(guò)案例詳細(xì)講解一下Java動(dòng)態(tài)代理的原理及實(shí)現(xiàn),需要的可以參考一下
    2022-08-08
  • SpringBoot集成MinIO的示例代碼

    SpringBoot集成MinIO的示例代碼

    對(duì)象存儲(chǔ)服務(wù)OSS是一種海量、安全、低成本、高可靠的云存儲(chǔ)服務(wù),適合存放任意類(lèi)型的文件,這篇文章主要介紹了SpringBoot集成MinIO的示例代碼,需要的朋友可以參考下
    2023-06-06
  • JAVA進(jìn)階篇之詳細(xì)了解File文件的常用API

    JAVA進(jìn)階篇之詳細(xì)了解File文件的常用API

    這篇文章主要給大家介紹了關(guān)于JAVA進(jìn)階篇之詳細(xì)了解File文件的常用API的相關(guān)資料,File用于表示文件系統(tǒng)中的一個(gè)文件或目錄,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • java實(shí)現(xiàn)的正則工具類(lèi)

    java實(shí)現(xiàn)的正則工具類(lèi)

    這篇文章主要介紹了java實(shí)現(xiàn)的正則工具類(lèi),可用于針對(duì)電話號(hào)碼、郵箱、QQ號(hào)碼、QQ密碼、手機(jī)號(hào)的正則驗(yàn)證功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 基于@Bean修飾的方法參數(shù)的注入方式

    基于@Bean修飾的方法參數(shù)的注入方式

    這篇文章主要介紹了@Bean修飾的方法參數(shù)的注入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java代理模式的深入了解

    Java代理模式的深入了解

    這篇文章主要為大家介紹了Java代理模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Spring?Boot2.6.0新特性之默認(rèn)禁止循環(huán)引用

    Spring?Boot2.6.0新特性之默認(rèn)禁止循環(huán)引用

    Spring?Boot2.6.0為我們帶來(lái)很多好用的新特性/改進(jìn),這篇文章主要給大家介紹了關(guān)于Spring?Boot2.6.0新特性之默認(rèn)禁止循環(huán)引用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • 新手初學(xué)Java常見(jiàn)排序算法

    新手初學(xué)Java常見(jiàn)排序算法

    排序(Sorting) 是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,它的功能是將一個(gè)數(shù)據(jù)元素(或記錄)的任意序列,重新排列成一個(gè)關(guān)鍵字有序的序列
    2021-07-07
  • SpringBoot+redis配置及測(cè)試的方法

    SpringBoot+redis配置及測(cè)試的方法

    這篇文章主要介紹了SpringBoot+redis配置及測(cè)試的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Spring Boot打包war jar 部署tomcat

    Spring Boot打包war jar 部署tomcat

    這篇文章主要介紹了Spring Boot打包war jar 部署tomcat的相關(guān)資料,需要的朋友可以參考下
    2017-10-10

最新評(píng)論

迭部县| 盐亭县| 正蓝旗| 高密市| 隆化县| 长武县| 密山市| 灵武市| 和政县| 本溪市| 筠连县| 三江| 深水埗区| 武冈市| 乐山市| 商水县| 平山县| 吴川市| 蒲江县| 北京市| 宝应县| 井研县| 桦南县| 贡觉县| 鄂托克旗| 黄冈市| 马鞍山市| 芮城县| 龙江县| 东至县| 南乐县| 平原县| 绵阳市| 五莲县| 贵阳市| 贡觉县| 阜康市| 轮台县| 保山市| 会东县| 土默特右旗|