页面内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>单文件上传</title>
</head>
<body>
<h3>单文件上传</h3>
<form method="post" action="/file/upload" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="提交">
</form>
<h3>多文件上传</h3>
<form method="post" action="/file/uploads" enctype="multipart/form-data">
<input type="file" multiple name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
=========================================================================
后台逻辑
package com.cn.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.UUID;
@Controller
@RequestMapping("/file/")
public class FileController {
/*单文件上传*/
@RequestMapping("upload")
@ResponseBody
public String upload(@RequestParam("file")MultipartFile file){
//获取原始名字
String fileName = file.getOriginalFilename();
//获取后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//文件保存路径
String filePath = "d:/file/";
//文件重命名,防止重复
fileName = filePath+ UUID.randomUUID() + fileName;
//文件对象
File dest = new File(fileName);
//判断路径是否存在,不存时创建
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdir();
}
try {
//将文件保存到服务器
file.transferTo(dest);
System.out.println("================");
return "上传成功";
}catch (Exception e){
e.printStackTrace();
}
return"上传失败";
}
@RequestMapping("/uploads")
@ResponseBody
public String handleFileUpload(HttpServletRequest request){
List<MultipartFile> files = ((MultipartHttpServletRequest)request).getFiles("file");
MultipartFile file = null;
for(int i = 0;i < files.size();i++){
file = files.get(i);
if(!file.isEmpty()){
try {
//获取原始名字
String fileName = file.getOriginalFilename();
//文件保存路径
String filePath = "d:/file/";
//防止文件重命名
fileName = filePath + UUID.randomUUID()+fileName;
//文件对象
File dest = new File(fileName);
//保存到服务器
file.transferTo(dest);
}catch (Exception e){
e.printStackTrace();
return"上传失败";
}
}else{
return"上传失败";
}
}
return"上传成功";
}
@RequestMapping("/download")
public void download(HttpServletResponse response) throws Exception{
//文件地址
String fileName = "a.txt";
String filePath = "D:/file";
File file = new File(filePath+"/"+fileName);
//创建输入对象
FileInputStream fis = new FileInputStream(file);
//设置相关格式
response.setContentType("application/force-download");
//设置下载后的文件名及handler
response.setHeader("Content-Disposition","attachement;fileName =" + fileName);
//创建输出对象
OutputStream os = response.getOutputStream();
//常规操作
byte[]buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf)) != -1){
os.write(buf,0,len);
}
fis.close();
}
}
这是一个关于文件上传和下载的示例。提供了单文件和多文件上传的HTML表单,并使用Spring MVC控制器处理上传请求,将文件保存到服务器。同时,实现了文件下载功能,通过HTTP响应将文件内容发送给客户端。
1538

被折叠的 条评论
为什么被折叠?



