两者的区别和联系
- multipartfile是spring的一部分,file则是java的标准类
- multipartfile用于接收web传递的文件,file操作本地系统的文件
multipartfile 转换file的三种方式
- 使用multipartfile 自带的transferto方法
- 使用java自带的fileoutputstream流
- 使用java自带的nio方法
transferto保存

代码
参数:目标文件的绝对路径
/**
* upload file 使用multipartfile接收文件 transferto方法保存文件
* @param file file
* @return
*/
@postmapping("/upload")
public string upload(@requestparam("file") multipartfile file) {
// 判断文件是否为空
if (file.isempty()) {
return "file is empty!";
}
try {
// 设置文件存储路径
string uploadfolder = upload_folder;
// 判断文件夹是否存在,不存在则创建
file folder = new file(uploadfolder);
if (!folder.exists()) {
folder.mkdirs();
}
// 获取文件名
string filename = file.getoriginalfilename();
// 设置文件存储路径
file targetfile = new file(uploadfolder + file.separator + filename);
// 保存文件
file.transferto(targetfile);
} catch (exception e) {
e.printstacktrace();
}
return "upload successfully!";
}
测试
借助apifox工具测试,mutipartfile 选择body


测试结果:同时创建了文件夹和文件

使用原生的fileoutputstream保存文件
- 创建 fileoutputstream流
- 将multipartfile 文件转换为字节数组输入到fileoutputstream流中,保存文件
/**
* 使用原生的fileoutputstream保存文件
*/
@postmapping("/upload2")
public string upload2(@requestparam("file") multipartfile file) {
// 判断文件是否为空
if (file.isempty()) {
return "file is empty!";
}
try {
// 设置文件存储路径
string uploadfolder = upload_folder;
// 判断文件夹是否存在,不存在则创建
file folder = new file(uploadfolder);
if (!folder.exists()) {
folder.mkdirs();
}
// 获取文件名
string filename = file.getoriginalfilename();
// 设置文件存储路径
file targetfile = new file(uploadfolder + file.separator + filename);
// 保存文件 使用原生的fileoutputstream保存文件
try(fileoutputstream fileoutputstream = new fileoutputstream(targetfile)) {
fileoutputstream.write(file.getbytes());
}
} catch (exception e) {
e.printstacktrace();
return "upload failed!";
}
return "upload successfully!";
}
nio复制文件
使用files工具类的copy方法,三个参数:源文件的输入流、目标文件的文件夹特殊操作:replace_existing的作用是 若存在则替换
/**
* 使用原生的nio复制保存文件
*/
@postmapping("/upload3")
public string upload3(@requestparam("file") multipartfile file) {
// 判断文件是否为空
if (file.isempty()) {
return "file is empty!";
}
try {
// 设置文件存储路径
string uploadfolder = upload_folder;
// 判断文件夹是否存在,不存在则创建
file folder = new file(uploadfolder);
if (!folder.exists()) {
folder.mkdirs();
}
// 获取文件名
string filename = file.getoriginalfilename();
// 设置文件存储路径
file targetfile = new file(uploadfolder + file.separator + filename);
// 保存文件 使用原生的nio复制保存文件
files.copy(file.getinputstream(), targetfile.topath(), standardcopyoption.replace_existing);
} catch (exception e) {
e.printstacktrace();
return "upload failed!";
}
return "upload successfully!";
}
以上就是spring将multipartfile转存到本地磁盘的方式的详细内容,更多关于spring multipartfile转存到磁盘的资料请关注代码网其它相关文章!
发表评论