CREATE TABLE `company` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`company_name` varchar(255) DEFAULT NULL COMMENT '企业名称',
`business_license_url` varchar(255) DEFAULT NULL COMMENT '营业执照上传url'
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4 COMMENT='公司';
准备实体类
@Data
public class Company {
private int id;
* 企业名称
private String companyName;
*营业执照上传url
private String businessLicenseUrl;
配置图片路径
#uploadPathImg=D\:\\img\\ #本地路径
uploadPathImg=/home/uploadedImg/ #服务器路径
读取配置文件中的图片路径
@Configuration
@EnableWebMvc
public class MyWebMvcConfiguration implements WebMvcConfigurer {
@Value("${uploadPathImg}")
private String uploadPathImg;
//配置本地文件映射到url上
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//重写方法
//修改tomcat 虚拟映射
registry.addResourceHandler("/uploadeview/**")
.addResourceLocations("file:"+uploadPathImg);//定义图片存放路径
上传图片请求
@RestController
public class test(){
@Value("${uploadPathImg}")
private String uploadPathImg;
@PostMapping("/upload")
public Object upload(@RequestParam(value = "file")MultipartFile file, HttpServletRequest req, Company company) throws IOException {
try {
if (file != null) {
String fileName = System.currentTimeMillis() + file.getOriginalFilename();
String upload_file_dir=uploadPathImg;//注意这里需要添加目录信息
String destFileName = uploadPathImg +fileName;
//4.第一次运行的时候,这个文件所在的目录往往是不存在的,这里需要创建一下目录(创建到了webapp下uploaded文件夹下)
File upload_file_dir_file = new File(upload_file_dir);
if (!upload_file_dir_file.exists())
upload_file_dir_file.mkdirs();
//5.把浏览器上传的文件复制到希望的位置
File targetFile = new File(upload_file_dir_file, fileName);
file.transferTo(targetFile);
company.setBusinessLicenseUrl(fileName);
companyMapper.addCompay(company);
}catch (Exception e){
e.printStackTrace();
return company;
添加图片到数据库,数据库中只存图片的名字
void addCompay(Company company);
接口的实现
<insert id="addCompay" parameterType="com.demo.entity..Compay" useGeneratedKeys="true" keyProperty="id" >
insert into tenant
company_name,
business_license_url
values
#{companyName},
#{businessLicenseUrl}
</insert>
在浏览器中 访问http://服务器ip地址/uploadeview/16126930576451612677236147shixun_1.png 即可显示图片
该项目实现文件上传功能,在前端上传图片和用户名,将图片保存在本地,同时将路径存储至数据库。之后可利用用户名进行对应存储图片路径获取和显示。
实体类和mapper
利用mybatis实现实体存储和获取
Img实体类
public class Img implements Serializable{
private static final long serialVersionUID = 899079
CREATE TABLE `company` (
`id` INT(11) PRIMARY KEY AUTO_INCREMENT,
`company_name` VARCHAR(255) DEFAULT NULL COMMENT '企业名称',
`business_license_url` VARCHAR(255) DEFAULT NULL COMMENT '营业执照上传url'
) ENGINE=INNODB AUTO_INCREMENT=101 DEFAULT
【SpringBoot】DEMO:上传头像,路径存入数据库,展示到页面上(解决了重启服务器才可以显示图片的问题)零、效果展示一、分析需求二、工具准备三、do it四、github链接
零、效果展示
需要原码的小伙伴,找点击github链接,原码+数据表文件已上传到github
一、分析需求
上传图片到服务器指定的文件夹
把图片的路径和名称存入数据库,图片名称加密
在html页面通过id搜索...
springboot配置application.yml,这里最大文件设置默认是1MB,可以修改设置大一点,避免出现文件大小受限的错误。点击上传之后,可以在指定的F:/zp/uploadImageDir目录下看到一个随机名称的图片,为了避免产生上传重名文件导致的问题,在后台重新用UUID重新生成一个随机的文件名来保存。注意:此处使用com.mysql.jdbc.Driver驱动器,启动项目会报一个告警。实现一个前端上传图片到后台服务器指定路径,并将路径存储在数据库中。然后查询数据库,可以看到图片保存的路径。
springboot+vue+mysql实现存储图片到数据库并显示1.存储到数据库(1)前端通过element ui 上传(2)后端2.从数据库取出并显示到前端(1)前端后端PS:一般图片是不会存到数据库的,而是存到服务器上,数据库保存的是图片路径。
1.存储到数据库
(1)前端通过element ui 上传
<el-upload
class="avatar-uploader"
action="/api/setImage"
个人比较擅长后端,前端对于我来说比较难受的一点就需要不断的调整样式,有时候为了美观,调整了一个布局又弄乱了另外的布局,可能是我对于前端孤陋寡闻了,对于我来说,能够实现功能,而且页面布局不是那么丑陋,有许多的瑕疵我也只能忍受,我似乎并不是很想花费许多的时间在页面样式的修改上,但是一个前端开发的大佬,一定是对于样式的修改布局等有自己的主见看法,是肯为了美观花费上比较长的时间区调整样式的,也会有自己样式布局的积累,有用得上的能够很快得拎出来使用。真的,后端可以说是写的比较详细的了,没讲的在代码上面都有注释了。
@Entity
@Table(name = "article_picture")
public class ArticlePictureEntity extends BaseEntity implements Serializable {
* 图片地址
private String url;
* 文章...
上传文件的功能在开发中很常见,趁着刚做完一个项目中上传头像的功能,将流程记录下来方便以后复用,也有利于加深印象。
为了避免影响理解,做了简化,用户类只设置了两个字段,一个是用户id,一个是用户头像存储路径。
2.目录结构
3.功能实现
controller层
UploadController
@Controller
public class UploadController {
4.调用接口返回的是图片在服务器上面的路径,前端人员只需要拼接自己部署项目服务器的ip+端口+接口返回的路径即可在服务器端进行图片的渲染。root,resource自己随便写只需要与2步骤中保持一致即可。服务器端上传文件位置的配置(application.yml)3.resourcePath,rootPath值讲解。SpringBoot实现图片上传服务器并返回路径。2.uploadFile详解实现文件服务器端处理。1.创建controller类,传入文件流。5.CommonResult内容。
Tomcat上传图片、文件等到项目目录外的其他存储位置
使用 Tomcat 作为服务器的时候,如果将上传文件保存在项目路径下,每次重启服务或者打成 war 包的时候很容易丢失上传的文件,另外就是文件多了,Tomcat容易崩,于是我们配置 Tomcat 把文件保存到项目外的其他磁盘路径:
打开 Tomcat conf 文件夹下的 server.xml 文件,在 Host 节点下添加如下配置: