实现:文件上传,下载功能
问题:HTML的文件上传后台怎么实现?
前台<input type="file"> 后台怎么获取该文件并下载?学习HTML的时候知道这是文件上传,但是没写过后台的实现,网上找了很多,但是要导包,而且许多都是优化,我现在只需要这个功能实现即可
主要问题是我不知道后台怎么获取该元素,找了许久终于找到
@RequestParam("file")MultipartFile file即可获取到name属性为file的文件
可以通过file.getOriginalFilename()方法来获取上传的文件名
再通过字节流输出到指定位置
FileOutputStream() fos = null;
try{
byte[] fileData = file.getBytes();
fos = new FileOutputStream(url);
fos.write(fileData);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
即实现了文件上传功能,其中url为文件存放的地址。
文件下载
文件下载我们需要知道文件的位置一般与前台传过来的值有关
File file = new File(url);
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition",
"attachment;filename=" + new String(attachmentName.getBytes("gbk"), "iso-8859-1")); // 转码之后下载的文件不会出现中文乱码
response.addHeader("Content-Length", "" + file.length());
//这一部分不是自己写的,注释是按照别人来的,我没有验证过是否正确,但最后实现了下载功能
try {
// 以流的形式下载文件
InputStream fis = new BufferedInputStream(new FileInputStream(url));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (Exception e) {
e.printStackTrace();
}