/** * 上传文件 */ @RequestMapping("/upload") public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception { if (file.isEmpty()) { throw new EIException("上传文件不能为空"); } String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1); String fileName = new Date().getTime()+"."+fileExt; File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName); file.transferTo(dest); if(StringUtils.isNotBlank(type) && type.equals("1")) { ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile")); if(configEntity==null) { configEntity = new ConfigEntity(); configEntity.setName("faceFile"); configEntity.setValue(fileName); } else { configEntity.setValue(fileName); } configService.insertOrUpdate(configEntity); } return R.ok().put("file", fileName); }
时间: 2024-04-27 12:22:47 浏览: 102
这是一个上传文件的方法,使用了Spring MVC框架。用户可以上传一个文件,其中type参数可选,用于区分不同的上传类型。如果type为1,则会将上传的文件名保存到数据库中。在上传文件时,会判断文件是否为空,如果为空则会抛出EIException异常。上传的文件会被保存到项目的upload文件夹下,文件名会加上当前时间戳和文件扩展名。最后,将上传的文件名作为返回结果。
相关问题
@RestController @MultipartConfig @RequestMapping("/upload") public class FileUploadController { @PostMapping("/img") public Map<String, Object> upload(HttpServletRequest servletRequest, @RequestParam("file")MultipartFile file) throws IOException { System.out.println("访问到了img"); //如果文件内容不为空,则写入上传路径 if (!file.isEmpty()) { //上传文件路径,本地的路径 String path = "D:\\ideaprojects\\SSM\\BookShopSystem\\src\\main\\webapp\\static\\img"; System.out.println("文件名称"+file.getOriginalFilename()); //上传文件名 String filename = file.getOriginalFilename(); File filepath = new File(path, filename); //判断路径是否存在,没有就创建一个 if (!filepath.getParentFile().exists()) { filepath.getParentFile().mkdirs(); } //将上传文件保存到一个目标文档中 File file1 = new File(path + File.separator + filename); file.transferTo(file1); Map<String, Object> res = new HashMap<>(); //返回的是一个url对象 res.put("url", file1); return res; } else { return null; } } }
这段代码是一个使用Spring框架编写的文件上传的控制器。该控制器使用了@RestController注解,表示这是一个RESTful风格的控制器,使用了@RequestMapping注解来映射请求路径。@MultipartConfig注解表示支持上传文件。其中,@PostMapping("/img")表示上传文件的请求路径为/upload/img,并且请求方式为Post。
该控制器中的upload方法用来处理文件上传请求。HttpServletRequest servletRequest表示HTTP请求对象,@RequestParam("file") MultipartFile file表示上传的文件对象。在方法中,首先判断文件是否为空,如果不为空,则获取上传文件的路径,判断路径是否存在,如果不存在则创建一个路径,然后将上传的文件保存到指定路径中。最后,将上传成功后的文件路径封装成一个Map对象,返回给前端。
@RequestMapping(value = "/image.action") //public String upload(@RequestParam(value ="image", required = false) MultipartFile file, HttpServletRequest request, ModelMap model) { public String upload( @RequestParam(value ="image", required = false) MultipartFile file, @RequestParam(value ="image1", required = false) MultipartFile file1, HttpServletRequest request, ModelMap model) { String path = request.getSession().getServletContext().getRealPath("/") + "upfiles/"; String fileName = file.getOriginalFilename(); int i = fileName.lastIndexOf("."); String name = String.valueOf(VeDate.getStringDatex()); String type = fileName.substring(i + 1); fileName = name + "." + type; File targetFile = new File(path, fileName); if (!targetFile.exists()) { targetFile.mkdirs(); } // 保存 try { file.transferTo(targetFile); } catch (Exception e) { e.printStackTrace(); } model.addAttribute("imageFileName", fileName); return "page/saveimage"; }如何使两个参数image和image1都能实现文件上传
可以在方法的参数中加入另一个MultipartFile类型的参数,并在@RequestParam注解中指定参数名为"image1",如下所示:
```java
@RequestMapping(value = "/image.action")
public String upload(
@RequestParam(value ="image", required = false) MultipartFile file,
@RequestParam(value ="image1", required = false) MultipartFile file1,
HttpServletRequest request, ModelMap model) {
String path = request.getSession().getServletContext().getRealPath("/") + "upfiles/";
String fileName = file.getOriginalFilename();
int i = fileName.lastIndexOf(".");
String name = String.valueOf(VeDate.getStringDatex());
String type = fileName.substring(i + 1);
fileName = name + "." + type;
File targetFile = new File(path, fileName);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
// 保存第一张图片
try {
file.transferTo(targetFile);
} catch (Exception e) {
e.printStackTrace();
}
// 保存第二张图片
String fileName1 = file1.getOriginalFilename();
int j = fileName1.lastIndexOf(".");
String name1 = String.valueOf(VeDate.getStringDatex());
String type1 = fileName1.substring(j + 1);
fileName1 = name1 + "." + type1;
File targetFile1 = new File(path, fileName1);
if (!targetFile1.exists()) {
targetFile1.mkdirs();
}
try {
file1.transferTo(targetFile1);
} catch (Exception e) {
e.printStackTrace();
}
model.addAttribute("imageFileName", fileName);
model.addAttribute("image1FileName", fileName1);
return "page/saveimage";
}
```
这样,在上传时就可以同时上传两张图片,分别保存为fileName和fileName1。
阅读全文