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

SpringBoot上傳圖片到指定位置并返回URL的實現(xiàn)

 更新時間:2022年03月20日 09:07:10   作者:七旅之言  
本文主要介紹了SpringBoot上傳圖片到指定位置并返回URL,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下<BR>

想做一個上傳圖片的功能,來展示用戶上傳的圖片。

在返回給前端的URL上弄了好久,前端一直無法訪問到URL,結(jié)果一直顯示404。 倒騰了一上午發(fā)現(xiàn)是 文件路徑映射的問題,后端部分有講解決辦法,可供大家參考

需求

前端的圖片上傳到服務(wù)器指定的文件目錄,并且將URL返回給前端

前端部分(ElementUI+Vue.js)

ElementUI的導(dǎo)入和使用:(組件 | Element)

Vue.js的導(dǎo)入和使用:(Vue.js (vuejs.org))

<template>
  <div class="form-group">
    <el-upload
        action="http://localhost:8081/upload"
        :on-preview="handlePreview"
        accept='.jpg'
        :limit="10"
    >
        <el-button size="small" type="primary">點擊上傳</el-button>
        <div slot="tip" class="el-upload__tip">只能上傳jpg/png文件,且不超過500kb</div>
    </el-upload>
  </div>
</template>

<script>

export default {
    name: "updateImg",
    methods:{
        handlePreview(file){
            window.open(file.response.url);
            console.log(file.response.url);
        }
    }
}
</script>

<style scoped>

</style>

效果:

后端部分(SpringBoot)

1.先配置application.yml文件

file-save-path:要保存圖片的位置 早上遇到404問題是因為 在 配置file-save-path時候 沒有在最后的 images后加上 ‘\’ 導(dǎo)致路徑無法匹配到

server:
  port: 8081
  
file-save-path: D:\SoftWare\SpringToolSuite\WorkPlace\HelloWorld\src\main\resources\static\images\
spring:
  mvc:
    view:
      prefix: /
      suffix: .jsp

2.映射資源-重寫WebMvcConfigurer接口,實現(xiàn)對資源的映射

package com.etc.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer{
	
	@Value("${file-save-path}")
	private String fileSavePath;
	
	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/images/**").addResourceLocations("file:"+fileSavePath);
		//System.out.println("file:"+fileSavePath);
	}

}

addResourceHandler("/images/**")表示凡事以 /images/ 路徑發(fā)起請求的,按照 addResourceLocations("file:"+fileSavePath)的路徑進(jìn)行映射

例如有一個url:http://localhost:8081/images/Hello.jpg

表示要對Hello.jpg進(jìn)行請求訪問,這時候服務(wù)器會把這個請求的資源映射到我們配置的路徑之下 也就是會到 fileSavePath 下去尋找 是否有 Hello.jpg 這個資源,返回給前端頁面。

3.Controller代碼

這邊為了方便使用Map進(jìn)行返回,實際開發(fā)中使用封裝好的類型進(jìn)行返回

package com.etc.controller;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;
import javax.sound.midi.SysexMessage;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@CrossOrigin
@RestController
public class ImgUploadController {

	SimpleDateFormat sdf = new SimpleDateFormat("/yyyy.MM.dd/");
	
	@Value("${file-save-path}")
	private String fileSavePath;
	
	@PostMapping("/upload")
	public Map<String, Object> fileupload(MultipartFile file,HttpServletRequest req){
		
		Map<String,Object> result = new HashMap<>();
		//獲取文件的名字
		String originName = file.getOriginalFilename();
		System.out.println("originName:"+originName);
		//判斷文件類型
		if(!originName.endsWith(".jpg")) {
			result.put("status","error");
			result.put("msg", "文件類型不對");
			return result;
		}
		//給上傳的文件新建目錄
		String format = sdf.format(new Date());
		String realPath = fileSavePath + format;
		System.out.println("realPath:"+realPath);
		//若目錄不存在則創(chuàng)建目錄
		File folder = new File(realPath);
		if(! folder.exists()) {
			folder.mkdirs();
		}
		//給上傳文件取新的名字,避免重名
		String newName = UUID.randomUUID().toString() + ".jpg";
		try {
			//生成文件,folder為文件目錄,newName為文件名
			file.transferTo(new File(folder,newName));
			//生成返回給前端的url
			String url = req.getScheme() + "://" + req.getServerName() + ":" + req.getServerPort() +"/images"+ format + newName;
			System.out.println("url:"+url);
			//返回URL
			result.put("status", "success");
			result.put("url", url);
 		}catch (IOException e) {
			// TODO Auto-generated catch block
 			result.put("status", "error");
 			result.put("msg",e.getMessage());
		}
		return result;
				
	}
}

到此這篇關(guān)于SpringBoot上傳圖片到指定位置并返回URL的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot上傳圖片并返回URL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java解析XML的四種方法詳解

    Java解析XML的四種方法詳解

    XML現(xiàn)在已經(jīng)成為一種通用的數(shù)據(jù)交換格式,平臺的無關(guān)性使得很多場合都需要用到XML。本文將詳細(xì)介紹用Java解析XML的四種方法
    2012-10-10
  • 解決IDEA springboot

    解決IDEA springboot"spring-boot-maven-plugin"報紅問題

    這篇文章主要介紹了解決IDEA springboot"spring-boot-maven-plugin"報紅問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • mybatisplus 的SQL攔截器實現(xiàn)關(guān)聯(lián)查詢功能

    mybatisplus 的SQL攔截器實現(xiàn)關(guān)聯(lián)查詢功能

    大家都知道m(xù)ybatisplus不支持關(guān)聯(lián)查詢,后來學(xué)習(xí)研究發(fā)現(xiàn)mybatisplus的SQL攔截器可以實現(xiàn)這一操作,下面小編給大家分享我的demo實現(xiàn)基本的關(guān)聯(lián)查詢功能沒有問題,對mybatisplus關(guān)聯(lián)查詢相關(guān)知識感興趣的朋友一起看看吧
    2021-06-06
  • Spring?Cloud?整合?nacos實現(xiàn)動態(tài)配置中心的詳細(xì)步驟

    Spring?Cloud?整合?nacos實現(xiàn)動態(tài)配置中心的詳細(xì)步驟

    這篇文章主要介紹了Spring?Cloud?整合?nacos?實現(xiàn)動態(tài)配置中心,整合步驟是通過添加依賴新建nacos配置,本文分步驟通過實例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-10-10
  • Java發(fā)送郵件遇到的常見需求匯總

    Java發(fā)送郵件遇到的常見需求匯總

    這篇文章主要介紹了Java發(fā)送郵件遇到的常見需求匯總的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • Java實現(xiàn)學(xué)生管理系統(tǒng)

    Java實現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)學(xué)生管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 深入講解Java 9中的九個新特性

    深入講解Java 9中的九個新特性

    Java 8 發(fā)布三年多之后,即將快到2017年7月下一個版本發(fā)布的日期了。 你可能已經(jīng)聽說過 Java 9 的模塊系統(tǒng),但是這個新版本還有許多其它的更新。 這里有九個令人興奮的新功能將與 Java 9 一起發(fā)布。需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-05-05
  • java泛型中占位符T和?有什么區(qū)別

    java泛型中占位符T和?有什么區(qū)別

    泛型中占位符T和?有什么區(qū)別?有的人可能弄不清楚,本文主要介紹了java泛型中占位符T和?有什么區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2022-05-05
  • 如何對Mysql數(shù)據(jù)表查詢出來的結(jié)果進(jìn)行排序

    如何對Mysql數(shù)據(jù)表查詢出來的結(jié)果進(jìn)行排序

    這篇文章主要介紹了如何對Mysql數(shù)據(jù)表查詢出來的結(jié)果進(jìn)行排序問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 教你使用Java實現(xiàn)掃雷小游戲(最新完整版)

    教你使用Java實現(xiàn)掃雷小游戲(最新完整版)

    本文給大家介紹使用Java實現(xiàn)掃雷小游戲,本程序封裝了五個類,分別是主類GameWin類,繪制底層地圖和繪制頂層地圖的類MapBottom類和MapTop類,繪制底層數(shù)字的類BottomNum類,以及初始化地雷的BottomRay類和工具GameUtil類,用于存靜態(tài)參數(shù)和方法,感興趣的朋友一起看看吧
    2022-05-05

最新評論

平果县| 遂宁市| 商河县| 黑水县| 长汀县| 蒙城县| 延长县| 洮南市| 额济纳旗| 平远县| 绿春县| 芜湖市| 澄迈县| 江华| 闽清县| 北海市| 丹巴县| 古丈县| 宝山区| 清水县| 桑日县| 双江| 房产| 丰原市| 泾源县| 凤庆县| 水城县| 宜州市| 卢湾区| 惠州市| 长乐市| 凌云县| 油尖旺区| 尼木县| 木兰县| 衡水市| 昭觉县| 瑞金市| 专栏| 巴林右旗| 肇庆市|