一般的文件上传(不依赖spring)
/**
* 保存文件
*
* @param path 文件绝对路径
* @param fileBytes 文件字节数据
* @throws ApiServiceException
*/
public void save(String path, byte [] fileBytes) throws ApiServiceException {
//保存文件到对应位置
File dir = new File(path);
if (!dir.getParentFile()
.exists()) {
boolean mkdir = dir.getParentFile()
.mkdirs();
if (!mkdir) {
// 文件父路径创建失败,父路径['{0}']
throw IctsServiceError.FILE_SAVE_ERROR.toException(
i18n(i18nPreFix + "file.parent.path.create.failure",
dir.getParentFile().getAbsolutePath()));
}
}
try {
FileUtils.writeByteArrayToFile(dir, fileBytes);
} catch (IOException e) {
//抛出异常
}
}
依赖spring
/**
* 保存文件
*
* @param path 文件绝对路径
* @param file 文件数据
* @throws ApiServiceException
*/
private void save(String path, MultipartFile file) throws ApiServiceException {
//保存文件到对应位置
File dir = new File(path);
if (!dir.getParentFile().exists()) {
dir.getParentFile().mkdirs();
}
try {
file.transferTo(dir);
} catch (IOException e) {
//抛出异常
}
}
大文件上传(不依赖spring)
/**
* 保存文件
*
* @param path 文件绝对路径
* @param inputStream 文件流
* @throws ApiServiceException
*/
public void save(String path, InputStream inputStream) throws ApiServiceException {
//保存文件到对应位置
File dir = new File(path);
boolean fileExists = dir.getParentFile() .exists();
if (!fileExists) {
boolean mkdir = dir.getParentFile().mkdirs();
if (!mkdir) {
// 文件路径创建失败,
}
}
try (FileOutputStream fos = new FileOutputStream(dir)) {
byte[] b = new byte[1024];
while ((inputStream.read(b)) != -1) {
fos.write(b);
}
} catch (IOException e) {
//文件流转读取失败
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
流关闭失败
}
}
}
}
从spring 的MultipartFile获取字节数组或者inputstream流
MultipartFile file
file.getBytes();
file.getInputStream()