springboot 实现图片上传功能
这几天在做重构学校的图书馆项目,用sprinboot重新搭建项目,原项目是使用PHP搭建的,刚开始看着挺懵的,慢慢的就看懂。这个项目中遇到的难题是照片上传功能,弄了挺久才实现出来。
此功能没有导入如何jar包。
这里介绍呢,我就按照项目本身的结构来实现这个功能。
首先是数据库的数据结构,项目先是通过照片名(xxx.jpg)保存到数据库(picurl).
故我的想法是通过新书的名字,获取到这个新书对应的照片名,进行对上传上的照片进行名字的修改。
1.Mapper层
<!--上传图片-->
<select id="changeAvatar" resultType="NewBooks">
select * from newbooks where title=#{title}
</select>
2.Service层
@Override
public NewBooks changePicUrl(String title) {
//根据参数调用方法
NewBooks newBooks = newBooksMapper.changeAvatar(title);
if (newBooks == null){
throw new NewsBookNotException("书库没有该书数据,请先添加!");
}
return newBooks;
}
3.自定义异常
3.1service层自定义异常
为了便于统一管理自定义异常,在service包中创一个ex包用来放自定义异常的基类异常,继承自RuntimeException类,并从父类生成子类的五个构造方法。
创建NewsBookNotException类,当用户输入到的书名,在数据库中没有找到数据,则会出对应的信息。
3.2 上传文件自定义异常
处理异常
1.在处理上传文件的过程中,用户可能会选择错误的文件上传,此时就应该抛出对应的异常并进行处理。所以需要创建文件上传相关异常的基类,即在com.cy.store.controller.ex包下创建FileUploadException类,并继承自RuntimeException类。
package com.pzlib.service.ex;
/** 文件上传相关异常的基类 */
public class FileUploadException extends RuntimeException {
public FileUploadException() {
super();
}
public FileUploadException(String message) {
super(message);
}
public FileUploadException(String message, Throwable cause) {
super(message, cause);
}
public FileUploadException(Throwable cause) {
super(cause);
}
protected FileUploadException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
2.在处理上传的文件过程中,经分析可能会产生以下异常。这些异常类都需要继承自FileUploadException类。
// 上传的文件为空
controller.ex.FileEmptyException
// 上传的文件大小超出了限制值
controller.ex.FileSizeException
// 上传的文件类型超出了限制
controller.ex.FileTypeException
// 上传的文件状态异常
controller.ex.FileStateException
// 上传文件时读写异常
controller.ex.FileUploadIOException
3.创建FileEmptyException异常类,并继承FileUploadException类。
package com.pzlib.service.ex;
/** 上传的文件为空的异常,例如没有选择上传的文件就提交了表单,或选择的文件是0字节的空文件 */
public class FileEmptyException extends FileUploadException {
// Override Methods...
}
4.创建FileSizeException异常类,并继承FileUploadException类。
package com.pzlib.service.ex;
/** 上传的文件的大小超出了限制值 */
public class FileSizeException extends FileUploadException {
// Override Methods...
}
5.创建FileTypeException异常类,并继承FileUploadException类。
package com.pzlib.service.ex;
/** 上传的文件类型超出了限制 */
public class FileTypeException extends