前言:
在我另一篇笔记中已经记载了如何用nginx + vsftp搭建图片服务器(请参考nginx + vsftp搭建图片服务器),并且用vsftp的客户端工具filezilla测试过已经可用。但是在开发中应该是把用户在前端页面提交的图片保存到图片服务器中,接下来就来实现这个功能。
需求:
用户在页面中上传一张图片,把图片保存到图片服务器,把图片的url保存到user表中,复制user表中的图片url在浏览器中可访问到用户上传的图片。
功能实现:
一、数据库设计:
图片发自简书App
二、项目设计:
为了快速开发,本案例使用springboot + mybatis实现。项目结构如下:
图片发自简书App
1、添加依赖:
pom.xml:
commons-fileupload
commons-fileupload
1.3.2
commons-io
commons-io
2.4
commons-net
commons-net
3.3
joda-time
joda-time
2.5
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
mysql
mysql-connector-java
runtime
2、配置:
application.properties:
注意,下面的basepath配置的是文件上传的根路径,/home/ftpuser/images,图片都传到这个目录或其子目录下,baseUrl是访问图片时的基础Url,因为在搭建图片服务器时我们设置了访问根目录是/home/ftpuser,所以访问的基础url就是192.168.xx.xxx/images#配置数据库连接信息spring.datasource.url=jdbc:mysql:///db_demo?useUnicode=true&characterEncoding=utf8
spring.datasource.username=#spring.datasource.password=#spring.datasource.driver-class-name=com.mysql.jdbc.Driver#Mybatis扫描接口对应的xml文件mybatis.mapper-locations=classpath:mappers/*.xml#起别名。可省略写mybatis的xml中的resultType的全路径 mybatis.type-aliases-package=com.zhu.pojo#配置文件上传器spring.http.multipart.maxFileSize=100Mb
spring.http.multipart.maxRequestSize=100Mb#ftp相关配置FTP.ADDRESS=192.168.xx.xxx
FTP.PORT=21
FTP.USERNAME=ftpuser
FTP.PASSWORD=ftpuser
FTP.BASEPATH=/home/ftpuser/images#图片服务器相关配置IMAGE.BASE.URL=http://192.168.xx.xxx/images#视图解析器spring.mvc.view.prefix=/pages/
spr