ssm实现文件上传和下载
时间: 2023-10-30 14:08:30 浏览: 162
在SSM基础上完成了文件上传与下载
3星 · 编辑精心推荐
SSM框架可以使用SpringMVC的文件上传和下载功能来实现文件上传和下载。下面是一个简单的示例:
1. 文件上传
在SpringMVC的控制器中,可以使用`@RequestParam`注解来接收上传的文件,然后使用`MultipartFile`类来处理文件。具体代码如下:
```java
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
// 判断文件是否为空
if (!file.isEmpty()) {
try {
// 获取文件存储路径(可以根据实际情况修改)
String path = request.getSession().getServletContext().getRealPath("/upload/");
// 获取文件名
String fileName = file.getOriginalFilename();
// 创建文件对象
File filepath = new File(path, fileName);
// 如果目录不存在则创建目录
if (!filepath.getParentFile().exists()) {
filepath.getParentFile().mkdirs();
}
// 将上传文件保存到目标文件中
file.transferTo(new File(path + File.separator + fileName));
return "success";
} catch (Exception e) {
e.printStackTrace();
}
}
return "fail";
}
```
2. 文件下载
在SpringMVC的控制器中,可以使用`@RequestMapping`注解来指定文件下载的URL地址,然后使用`HttpServletResponse`类来实现文件下载。具体代码如下:
```java
@RequestMapping(value = "/download", method = RequestMethod.GET)
public void download(HttpServletRequest request, HttpServletResponse response) {
// 获取上传文件的存储路径(可以根据实际情况修改)
String path = request.getSession().getServletContext().getRealPath("/upload/");
// 获取文件名
String fileName = "test.txt";
// 创建文件对象
File file = new File(path + File.separator + fileName);
try {
// 设置响应头,告诉浏览器该文件是一个下载文件
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"), "ISO8859-1"));
// 读取文件并写入到输出流中
InputStream in = new FileInputStream(file);
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();
} catch (Exception e) {
e.printStackTrace();
}
}
```
以上示例中的文件名和存储路径可以根据实际情况进行修改。同时需要注意的是,文件上传和下载的路径要保证存在,并且有足够的读写权限。
阅读全文