文件上传
private boolean uploadOriFile(MultipartFile multipartFile) throws IOException {
String fileName = multipartFile.getOriginalFilename();
int index = fileName.lastIndexOf(".");
if (index == -1) {
throw new RuntimeException("文件需要有后缀");
}
String suffix = fileName.substring(index + 1);
if ("txt".equals(suffix)) {
File file = new File(bizConfig.getFilePath(), multipartFile.getOriginalFilename());
file.setReadable(true);
file.setWritable(true);
FileOutputStream fileOutputStream = new FileOutputStream(file);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "utf-8");
InputStream inputStream = multipartFile.getInputStream();
ByteArrayOutputStream baos = cloneInputStream(inputStream);
InputStream stream2 = new ByteArrayInputStream(baos.toByteArray());
String charseName = EncodingDetectUtils.getBytesEncode(baos.toByteArray());
log.info("上传的输入txt类型为:" + charseName);
InputStreamReader inputStreamReader = new InputStreamReader(stream2, charseName);
char[] buf = new char[1024];
int len = 0;
while ((len = inputStreamReader.read(buf)) != -1) {
outputStreamWriter.write(buf, 0, len);
}
outputStreamWriter.close();
inputStreamReader.close();
return true;
} else {
File file = new File(bizConfig.getFilePath(), multipartFile.getOriginalFilename());
file.setReadable(true);
file.setWritable(true);
FileOutputStream fileOutputStream = new FileOutputStream(file);
InputStream inputStream = multipartFile.getInputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
byte[] buf = new byte[1024];
int len = 0;
while ((len = bufferedInputStream.read(buf)) != -1) {
bufferedOutputStream.write(buf, 0, len);
}
bufferedInputStream.close();
bufferedOutputStream.close();
return true;
}
}
文件下载
public void downloadFile(Long fileId, HttpServletResponse response) {
FileInfo fileInfo=fileInfoService.getById(fileId);
String filepath=fileInfo.getFullName();
//如果不为空则进行下载
if(filepath!=null){
File file=new File(filepath);
//如果文件存在则进行下载
if(file.exists()){
//配置文件下载
response.setHeader("content-type","application/octet-stream");
response.setContentType("application/octet-stream");
response.setCharacterEncoding("utf-8");
response.setContentLength((int) file.length());
//下载文件能正常显示中文
try {
response.setHeader("Content-Disposition",
"attachment;filename="+ URLEncoder.encode(FilenameUtils.getName(filepath), "UTF-8"));
} catch (UnsupportedEncodingException e) {
log.error(ExceptionUtils.getStackTrace(e));
}
//实现文件下载
byte[] buffer=new byte[1024];
FileInputStream fis=null;
BufferedInputStream bis=null;
try{
fis=new FileInputStream(file);
bis=new BufferedInputStream(fis);
OutputStream os=response.getOutputStream();
int i=bis.read(buffer);
while (i!=-1){
os.write(buffer,0,i);
os.flush();
i=bis.read(buffer);
}
} catch (IOException e){
log.error(ExceptionUtils.getStackTrace(e));
} finally {
if(bis!=null){
try {
bis.close();
} catch (IOException e) {
log.error(ExceptionUtils.getStackTrace(e));
}
}
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
log.error(ExceptionUtils.getStackTrace(e));
}
}
}
}
}
}