标签:NPU for http ram public origin content rri get
记录一下java实现文件的上传、下载、删除的功能demo;
/**
* Controller
*/
@Slf4j
@RestController
@RequestMapping
public class FileController {
@Resource
IFileService fileService;
/**
* 文件上传
*
* @param file
*/
@RequestMapping("/uploadFile")
public void uploadFile(@RequestParam(value = "file") List list) {
//参数校验
if (list == null || list.isEmpty()) {
log.error("uploadFile 接口,参数文件列表为空");
return ;
}
//上传文件
return fileService.uploadFile(list);
}
/**
* 文件下载
*
* @param id
* @param fileName
*/
@RequestMapping(value = "/downloadFile")
@ResponseBody
public void downloadFile(@RequestParam("fileName") String fileName) {
if (StringUtils.isBlank(fileName)) {
log.error("fileName 都不能为空");
return ;
}
try {
fileService.downloadFile(id, fileName);
} catch (Exception e) {
log.error("文件下载异常", e);
return ;
}
}
/**
* 文件删除
*
* @param fileName
*/
@RequestMapping(value = "/delFile")
@ResponseBody
public void delFile(@RequestParam("fileName") String fileName) {
if (StringUtils.isBlank(fileName)) {
log.error("fileName 不能为空");
return ;
}
fileService.delFile(fileName);
}
}
/**
* 相关service
*/
public interface IFileService {
/**
* 上传文件
*
* @param list
*/
void uploadFile(List list);
/**
* 下载文件
*
* @param fileName
* @throws Exception
*/
void downloadFile(String fileName) throws Exception;
/**
* 删除文件
*
* @param fileName
*/
void delFile( String fileName);
}
/**
* service实现
*/
@Slf4j
@Service
public class FileServiceImpl implements IFileService {
@Value("${filePath}")
private String fileDir;//文件目录
@Override
public void uploadFile(List list) {
String path = fileDir;
for (MultipartFile file : list) {
//文件夹不存在,就创建
File filePath = new File(path);
if (!filePath.exists()) {
filePath.mkdirs();
}
//获取 文件名
String fileName = file.getOriginalFilename();
//获取文件大小,单位kb
long fileSize = file.getSize() / 1024;
//写文件
try {
File file2 = new File(path, fileName);
OutputStream out = new FileOutputStream(file2);
byte[] bytes = file.getBytes();
out.write(bytes);
out.close();
} catch (IOException e) {
log.error("文件上传出现异常", e);
e.printStackTrace();
}
}
}
@Override
public void downloadFile(String fileName) throws Exception {
String filePath = fileDir + File.separator + fileName;
//得到要下载的文件
File file = new File(filePath);
//如果文件不存在
if (!file.exists()) {
log.error("目录或文件不存在,{}_{}", file.getPath(), file.getName());
return ;
}
//处理文件名
String realname = fileName.substring(fileName.indexOf("_") + 1);
//设置响应头,控制浏览器下载该文件
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(realname, "UTF-8"));
//读取要下载的文件,保存到文件输入流
FileInputStream in = new FileInputStream(filePath);
//创建输出流
OutputStream out = response.getOutputStream();
//创建缓冲区
byte[] buffer = new byte[1024];
int len = 0;
//循环将输入流中的内容读取到缓冲区当中
while ((len = in.read(buffer)) > 0) {
//输出缓冲区的内容到浏览器,实现文件下载
out.write(buffer, 0, len);
}
//关闭文件输入流
in.close();
//关闭输出流
out.close();
}
@Override
public void delFile(String fileName) {
//拼接filePath
String filePath = fileDir + File.separator + fileName;
File file = new File(filePath);
// 判断文件是否存在
if (!file.exists() || !file.isFile()) {
log.error("文件不存在,{}_{}", file.getPath(), file.getName());
return ;
}
Boolean delFlag = deleteFile(file);
//打印删除状态
log.info("文件:{},删除状态:{}", fileName, delFlag);
}
/**
* 删除单个文件
*
* @param file 被删除的文件
* @return 单个文件删除成功返回true,否则返回false
*/
public boolean deleteFile(File file) {
boolean flag = false;
// 文件且不为空,则进行删除
if (file.isFile() && file.exists()) {
flag = file.delete();
}
return flag;
}
}
java——文件的上传、下载、删除操作DEMO
标签:NPU for http ram public origin content rri get
原文地址:https://www.cnblogs.com/javaTank/p/14651903.html