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

利用Springboot+vue實(shí)現(xiàn)圖片上傳至數(shù)據(jù)庫(kù)并顯示的全過(guò)程

 更新時(shí)間:2023年04月12日 09:59:12   作者:是阿覃呀!  
最近遇到個(gè)需求,需要將圖片在前端上傳到服務(wù)器進(jìn)行保存,然后讀取到前端進(jìn)行展示,這篇文章主要給大家介紹了關(guān)于利用Springboot+vue實(shí)現(xiàn)圖片上傳至數(shù)據(jù)庫(kù)并顯示的相關(guān)資料,需要的朋友可以參考下

一、前端設(shè)置

前端是Vue + Element-UI 采用el-upload組件(借鑒官方)上傳圖片:

<el-upload
     ref="upload"
     class="avatar-uploader"
     action="/setimg"
     :http-request="picUpload"
     :show-file-list="false"
     :auto-upload="false"
     :on-success="handleAvatarSuccess"
     :before-upload="beforeAvatarUpload">
   <img v-if="$hostURL+imageUrl" :src="$hostURL+imageUrl" class="avatar">
   <i v-else class="el-icon-plus avatar-uploader-icon"></i>
 </el-upload>

<el-button type="primary" @click="submitUpload">修改</el-button>

action在這里可以隨便設(shè)置,因?yàn)樵诤竺嬗?:http-request 去自己設(shè)置請(qǐng)求,注意由于是自己寫(xiě)請(qǐng)求需要 :auto-upload=“false” ,并且由于是前后端連接要解決跨域問(wèn)題,所以在 $hostURL+imageUrl 定義了一個(gè)全局變量:

//在main.js中
	Vue.prototype.$hostURL='http://localhost:8082'

在methods中:

methods:{
//這里是官方的方法不變
	handleAvatarSuccess(res, file){
	      this.imageUrl = URL.createObjectURL(file.raw);
	},
    beforeAvatarUpload(file) {
      const isJPG = file.type === 'image/jpeg';
      const isLt2M = file.size / 1024 / 1024 < 2;

      if (!isJPG) {
        this.$message.error('上傳頭像圖片只能是 JPG 格式!');
      }
      if (!isLt2M) {
        this.$message.error('上傳頭像圖片大小不能超過(guò) 2MB!');
      }
      return isJPG && isLt2M;
    },
//這里是自定義發(fā)送請(qǐng)求
    picUpload(f){
     let params = new FormData()
     //注意在這里一個(gè)坑f.file
     params.append("file",f.file);
     this.$axios({
       method:'post',
       //這里的id是我要改變用戶的ID值
       url:'/setimg/'+this.userForm.id,
       data:params,
       headers:{
         'content-type':'multipart/form-data'
       }
     }).then(res=>{
     //這里是接受修改完用戶頭像后的JSON數(shù)據(jù)
       this.$store.state.menu.currentUserInfo=res.data.data.backUser
       //這里返回的是頭像的url
       this.imageUrl = res.data.data.backUser.avatar
     })
   },
   //觸發(fā)請(qǐng)求
    submitUpload(){
   this.$refs.upload.submit();
 	}
}

在上面代碼中有一個(gè)坑 f.file ,我看了許多博客,發(fā)現(xiàn)有些博客只有 f 沒(méi)有 .file 導(dǎo)致出現(xiàn)401、505錯(cuò)誤。

二、后端代碼

1.建立數(shù)據(jù)庫(kù)

這里頭像avatar是保存的上傳圖片的部分url

2.實(shí)體類、Mapper

實(shí)體類:

采用mybatis plus

@Data
public class SysUser extends BaseEntity{
//這里的BaseEntity是id,statu,created,updated數(shù)據(jù)
    private static final Long serialVersionUID = 1L;

    @NotBlank(message = "用戶名不能為空")
    private String username;

//    @TableField(exist = false)
    private String password;
    @NotBlank(message = "用戶名稱不能為空")
    private String name;
    //頭像
    private String avatar;

    @NotBlank(message = "郵箱不能為空")
    @Email(message = "郵箱格式不正確")
    private String email;
    private String tel;
    private String address;
    @TableField("plevel")
    private Integer plevel;
    private LocalDateTime lastLogin;
}
@Mapper
@TableName("sys_user")
public interface SysUserMapper extends BaseMapper<SysUser> {
}

3.接受請(qǐng)求,回傳數(shù)據(jù)

    @Value("${file.upload-path}")
    private String pictureurl;
    @PostMapping("/setimg/{id}")
    public Result setImg(@PathVariable("id") Long id, @RequestBody MultipartFile file){
        String fileName = file.getOriginalFilename();
        File saveFile = new File(pictureurl);
        //拼接url,采用隨機(jī)數(shù),保證每個(gè)圖片的url不同
        UUID uuid = UUID.randomUUID();
        //重新拼接文件名,避免文件名重名
        int index = fileName.indexOf(".");
        String newFileName ="/avatar/"+fileName.replace(".","")+uuid+fileName.substring(index);
        //存入數(shù)據(jù)庫(kù),這里可以加if判斷
        SysUser user = new SysUser();
        user.setId(id);
        user.setAvatar(newFileName);
        sysUserMapper.updateById(user);
        try {
            //將文件保存指定目錄
            file.transferTo(new File(pictureurl + newFileName));
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("保存成功");
        SysUser ret_user = sysUserMapper.selectById(user.getId());
        ret_user.setPassword("");
        return Result.succ(MapUtil.builder()
                .put("backUser",ret_user)
                .map());
    }

yml文件中圖片的保存地址:

file:
  upload-path: D:\Study\MyAdmin\scr

三、顯示圖片

1.后端配置

實(shí)現(xiàn)前端Vue :scr 更具url顯示頭像圖片,則必須設(shè)置WebMVC中的靜態(tài)資源配置

建立WebConfig類

@Configuration
public class WebConfig implements WebMvcConfigurer{
    private String filePath = "D:/Study/MyAdmin/scr/avatar/";
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/avatar/**").addResourceLocations("file:"+filePath);
        System.out.println("靜態(tài)資源獲取");
    }
}

這樣就可是顯示頭像圖片了

2.前端配置

注意跨域問(wèn)題以及前面的全局地址變量

vue.config.js文件(若沒(méi)有則在scr同級(jí)目錄下創(chuàng)建):

module.exports = {
    devServer: {
        // 端口號(hào)
        open: true,
        host: 'localhost',
        port: 8080,
        https: false,
        hotOnly: false,
        // 配置不同的后臺(tái)API地址
        proxy: {
            '/api': {
            //后端端口號(hào)
                target: 'http://localhost:8082',
                ws: true,
                changOrigin: true,
                pathRewrite: {
                    '^/api': ''
                }
            }
        },
        before: app => {}
    }
}

main.js:

	axios.defaults.baseURL = '/api'

總結(jié)

到此這篇關(guān)于利用Springboot+vue實(shí)現(xiàn)圖片上傳至數(shù)據(jù)庫(kù)并顯示的文章就介紹到這了,更多相關(guān)Springboot vue圖片上傳至數(shù)據(jù)庫(kù)并顯示內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JAVA集合框架工具類自定義Collections集合方法

    JAVA集合框架工具類自定義Collections集合方法

    今天小編就為大家分享一篇關(guān)于JAVA集合框架工具類自定義Collections集合方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Springboot項(xiàng)目出現(xiàn)java.lang.ArrayStoreException的異常分析

    Springboot項(xiàng)目出現(xiàn)java.lang.ArrayStoreException的異常分析

    這篇文章介紹了Springboot項(xiàng)目出現(xiàn)java.lang.ArrayStoreException的異常分析,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • SpringMVC將請(qǐng)求和響應(yīng)的數(shù)據(jù)轉(zhuǎn)換為JSON格式的幾種方式

    SpringMVC將請(qǐng)求和響應(yīng)的數(shù)據(jù)轉(zhuǎn)換為JSON格式的幾種方式

    這篇文章主要給大家介紹餓了SpringMVC將請(qǐng)求和響應(yīng)的數(shù)據(jù)轉(zhuǎn)換為JSON格式的幾種方式,文中通過(guò)代碼示例和圖文結(jié)合給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-11-11
  • Java中的顯示鎖ReentrantLock使用與原理詳解

    Java中的顯示鎖ReentrantLock使用與原理詳解

    這篇文章主要介紹了Java中的顯示鎖ReentrantLock使用與原理詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • springboot整合mybatis中的問(wèn)題及出現(xiàn)的一些問(wèn)題小結(jié)

    springboot整合mybatis中的問(wèn)題及出現(xiàn)的一些問(wèn)題小結(jié)

    這篇文章主要介紹了springboot整合mybatis中的問(wèn)題及出現(xiàn)的一些問(wèn)題小結(jié),本文給出了解決方案,需要的朋友可以參考下
    2018-11-11
  • Java8在遍歷集合時(shí)刪除元素問(wèn)題解決

    Java8在遍歷集合時(shí)刪除元素問(wèn)題解決

    本文主要介紹了Java8在遍歷集合時(shí)刪除元素問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • JavaWeb中的文件的上傳和下載

    JavaWeb中的文件的上傳和下載

    JavaWeb 文件的上傳和下載是指在Web應(yīng)用中實(shí)現(xiàn)用戶上傳文件到服務(wù)器和從服務(wù)器下載文件的功能,通過(guò)JavaWeb技術(shù),可以方便地實(shí)現(xiàn)文件的上傳和下載操作,提供更好的用戶體驗(yàn)和數(shù)據(jù)交互,需要的朋友可以參考下
    2023-10-10
  • Java中實(shí)現(xiàn)Comparable和Comparator對(duì)象比較

    Java中實(shí)現(xiàn)Comparable和Comparator對(duì)象比較

    這篇文章主要針對(duì)Java中Comparable和Comparator對(duì)象進(jìn)行比較,感興趣的小伙伴們可以參考一下
    2016-02-02
  • JAVA抽象類,接口,內(nèi)部類詳解

    JAVA抽象類,接口,內(nèi)部類詳解

    這篇文章主要給大家介紹了關(guān)于Java中抽象類,接口,內(nèi)部類的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • spring-boot-maven-plugin:打包時(shí)排除provided依賴問(wèn)題

    spring-boot-maven-plugin:打包時(shí)排除provided依賴問(wèn)題

    這篇文章主要介紹了spring-boot-maven-plugin:打包時(shí)排除provided依賴問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論

宣化县| 金阳县| 仙桃市| 宁化县| 朝阳市| 始兴县| 沙坪坝区| 齐齐哈尔市| 庄浪县| 麻江县| 金昌市| 泉州市| 浦东新区| 抚顺市| 乌鲁木齐市| 南安市| 宣城市| 丰宁| 高碑店市| 花莲市| 防城港市| 三亚市| 安达市| 东城区| 江北区| 沁水县| 华容县| 收藏| 汉川市| 伊宁市| 浦城县| 麻江县| 克山县| 衡阳县| 黑水县| 洞头县| 天等县| 巧家县| 巴林右旗| 岳阳市| 从化市|