将MultipartFile保存到本地
时间: 2023-11-16 22:01:04 浏览: 95
要将MultipartFile保存到本地,可以使用Java中的FileUtils类或者OutputStream和InputStream流。下面是使用FileUtils类的示例代码:
```java
public void saveFileByDirectory(MultipartFile file) {
try {
// 将文件保存在服务器目录中
// 文件名称
String uuid = UUID.randomUUID().toString();
// 得到上传文件后缀
String originalName = file.getOriginalFilename();
String ext = "." + FilenameUtils.getExtension(originalName);
// 新生成的文件名称
String fileName = uuid + ext;
// 复制文件
File targetFile = new File("D:\\sim-file\\", fileName);
FileUtils.writeByteArrayToFile(targetFile, file.getBytes());
} catch (IOException e) {
logger.error("保存文件到服务器(本地)失败", e);
}
}
```
另外,使用OutputStream和InputStream流的示例代码如下:
```java
public static void saveFileByStream(MultipartFile file) {
OutputStream os = null;
InputStream inputStream = null;
String fileName = null;
try {
inputStream = file.getInputStream();
fileName = file.getOriginalFilename();
log.info("fileName=" + fileName);
} catch (IOException e) {
e.printStackTrace();
}
try {
String path = "F:\\test\\";
// 2、保存到临时文件
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流保存到本地文件
File tempFile = new File(path);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
os = new FileOutputStream(tempFile.getPath() + File.separator + fileName);
// 开始读取
while ((len = inputStream.read(bs)) ! -1) {
os.write(bs, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 完毕,关闭所有链接
try {
os.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
阅读全文