1.java下载功能的实现
public ResponseEntity<byte[]> downFile(String fileName, String realPath){
InputStream in;//将该文件加入到输入流之中
byte[] body=null;
System.out.println(fileName + "......"+realPath);
try {
in = new FileInputStream(new File(realPath));
body=new byte[in.available()];// 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数
in.read(body);//读入到输入流里面
fileName=new String(fileName.getBytes("UTF-8"), "ISO8859-1");//防止中文乱码
} catch (FileNotFoundException e) {
log.error(e+"未找到下载的文件");
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
log.error(e+"文件下载异常");
e.printStackTrace();
} catch (IOException e) {
log.error(e+"文件下载异常");
e.printStackTrace();
}
HttpHeaders headers=new HttpHeaders();//设置响应头
headers.add("Content-Disposition", "attachment;filename="+fileName);
HttpStatus statusCode = HttpStatus.OK;//设置响应吗
ResponseEntity<byte[]> response=new ResponseEntity<byte[]>(body, headers, statusCode);
return response;
}
调用方法:
public ResponseEntity<byte[]> downExcelModel(HttpServletRequest request){
String fileName= FILENAME;
//ServletContext.getResourceAsStream
String realPath = ConfigUtil.getSystemProperty("modelExcel_path")+fileName;//得到文件所在位置
return downFileService.downFile(fileName,realPath);
}
2.java上传功能的实现
@RequestMapping(value = "batchimport.shtml")
public void batchimport(@RequestParam(value="filename") MultipartFile file,
HttpServletRequest request,HttpServletResponse response){
OutputStream os = null;
InputStream inputStream = null;
try {
inputStream = file.getInputStream();
String path = ConfigUtil.getSystemProperty("tempExcel_path");
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流保存到本地文件
File tempFile = new File(path);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
name = getUUIDFileName(name);
os = new FileOutputStream(tempFile.getPath() + File.separator + name);
// 开始读取
while ((len = inputStream.read(bs)) != -1) {
os.write(bs, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
return;
} catch (Exception e) {
e.printStackTrace();
return;
} finally {
// 完毕,关闭所有链接
try {
os.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
return;
}
}