无需任何工具类,纯手工实现springboot上传服务器。上传文件之后自定义路径并把修改文件名为 uuid ,避免文件名重复。
下面我详细的把代码给出,照着我的详细流程,定能解决你的问题。
1、引入swagger 和 lombok
<!-- swagger -->
<dependency>
<groupid>io.springfox</groupid>
<artifactid>springfox-swagger2</artifactid>
<version>2.5.0</version>
</dependency>
<dependency>
<groupid>io.springfox</groupid>
<artifactid>springfox-swagger-ui</artifactid>
<version>2.5.0</version>
</dependency>
<dependency>
<groupid>org.projectlombok</groupid>
<artifactid>lombok</artifactid>
<version>1.16.20</version>
</dependency>2、创建上传信息的实体类
@apimodel(description = "处理后上传文件的信息")
@data
@noargsconstructor
public class uploadinfo implements serializable {
private static final long serialversionuid = 1l;
@apimodelproperty(value = "上传结果")
private string result;
@apimodelproperty(value = "初始文件名")
private string beginfilename;
@apimodelproperty(value = "最终上传文件名")
private string lastfilename;
@apimodelproperty(value = "文件类型")
private string filetype;
@apimodelproperty(value = "文件大小")
private string filesize;
@apimodelproperty(value = "文件上传的地址")
private string uploadurl;
}3、在service层新建 uploadservice
/**
* 上传文件接口
*
* @param file 上传的文件
* @param uploadfilepath 上传到服务器的路径
* @return 上传并处理后的信息
* @throws exception 上传异常
*/
uploadinfo upload(multipartfile file, string uploadfilepath) throws exception;4、新建一个uploadserviceimpl
这是上面哪个service的实现类。
@service
public class uploadserviceimpl implements uploadservice {
@override
public uploadinfo upload(multipartfile file, string uploadfilepath) throws exception {
if (file.isempty())
return null;
uploadinfo uploadinfo = new uploadinfo();
string originalfilename;
string filename;
originalfilename = file.getoriginalfilename();
filename = uuid.randomuuid().tostring() + file.getoriginalfilename();
string filetype = filename.substring(filename.lastindexof(".") + 1);
long filesize = file.getsize();
file packagefile = new file(uploadfilepath);
if (!packagefile.exists()) {
packagefile.mkdir();
}
file targetfile = new file(uploadfilepath + "/" + filename);
file.transferto(targetfile);
uploadinfo.setbeginfilename(originalfilename);
uploadinfo.setlastfilename(filename);
uploadinfo.setfiletype(filetype);
uploadinfo.setfilesize(long.tostring(filesize));
uploadinfo.setuploadurl(targetfile.tostring());
uploadinfo.setresult("上传成功");
return uploadinfo;
}
}5、新建controller测试
@autowired
private uploadservice uploadservice;
private final static string upload_path = "c:/file";
@apioperation(value = "上传文件测试",notes = "请记得上传时加上参数 file !")
@postmapping(value = "/uc/uploadfile",consumes= mediatype.multipart_form_data_value)
public uploadinfo uploadtest(@requestparam("file") multipartfile file){
uploadinfo uploadinfo = null;
try{
uploadinfo = uploadservice.upload(file,upload_path);
}catch (exception e){
system.out.println(e.tostring());
}
return uploadinfo;
}postman测试结果:

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论