JeecgBoot文件上传实现方式
作者:bug0到1
JeecgBoot提供本地和阿里云两种文件上传方式,本地上传需要修改配置文件,设置上传目录,并在前端页面展示图片时进行相应的配置,阿里云上传则需要注册阿里云账号,开通OSS服务,并在配置文件中进行相应的设置,上传到阿里云OSS的文件会直接存储完整链接,后台不需要拼接
一、JeecgBoot自带两种文件上传方式
1、本地
2、阿里云
3、配置文件如图所示

二、本地上传方式
1、更改配置文件中uploadType方式
uploadType: local
2、文件上传根目录可随意设置
path :
#文件上传根目录 设置
upload: /fiel1/file2
3、如果其他不更改的话,数据库默认存的是temp/文件名,后台前端页面展示图片时,需配置
(1)、列表对应字段加入插槽
{
title:'图片',
align:"center",
dataIndex: 'image',
scopedSlots:{customRender:"image"}
},
(2)、a-table标签加入, scopedSlots:{customRender:“image”} 需和slot=“image” 对应
<!--返回图片-->
<template slot="image" slot-scope="text,record,index">
<div class="anty-img-wrap">
<a-avatar shape="square" :src="getAvatarViewPro(record.image)" icon="user"/>
</div>
</template>
(3)、script中引入
import {getFileAccessHttpUrl} from '@/api/manage';
(4)、methods方法
//显示图片
getAvatarViewPro:function(image) {
if(image.indexOf(",") != -1){
var str1 = image.substring(0,image.indexOf(","));
return getFileAccessHttpUrl(str1);
}else{
return getFileAccessHttpUrl(image);
}
},
4、如果小程序端页面展示图片,有两种方法
(1)、小程序端/H5/app,自己将服务器地址和后台返回的图片地址拼接(可用,不提倡)
(2)、后台拼接返回完整的地址,小程序端/H5/app直接展示
- 配置文件path中加入url配置
path :
url: 服务器地址:端口号/项目名/sys/common/static/
- 后台对应类中引入如下,方法中进行拼接返回
@Value("${jeecg.path.url}")
private String upLoadUrl;
三、阿里云上传方式
1、更改配置文件中uploadType方式
uploadType: alioss
2、注册登录阿里云账号,开通oss服务,创建相关秘钥和bucket
下一篇专门写怎么开通阿里云oss服务
3、至此阿里云上传方式完毕,数据库直接存储的是完整的可访问链接,后台不需要自己拼接
4、此时阿里云oss中,上传的所有文件都在一起,没有根据日期创建文件夹区分
- 在jeecg-boot-base\jeecg-boot-base-core\src\main\java\org\jeecg\common\util\oss\文件夹在找到OssBootUtil类,修改upload方法如下:
//按时间分文件夹
String datePath = new DateTime().toString("yyyy/MM/dd/HH");
String fileName = datePath + "_" + (orgName.indexOf(".")==-1
?orgName + "_" + System.currentTimeMillis()
:orgName.substring(0, orgName.lastIndexOf("."))
+ "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf(".")));
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
