java实现文件上传

在原始的Servlet中

要上传文件最原始的方法是使用io流:
request.getInputStream()获取request请求的io流来获取文件 


在SpringMVC中,(在比较新版本的servlet也适用)

提供了上传文件的工具,需引入包:

然后,配置文件:【commonsMultipartResolver是spring提供的处理上传文件配置的类】

multipartFile是一个接口,是spring用来接收文件的,常用方法:

注意:前端表单的enctype必须是multipart/form-data,否则识别不了
代码:

多文件上传:
MultipartFile[]
接收,然后用for循环一个个存储就行了


在SpringBoot中:

springboot的web框架已经自动集成上传工具了,无需导包。

配置文件:(此时我的项目版本为2.1.6)


上传图片的例子(多文件上传):
 
@Value("${web.upload-path}") private String path;

public
String upload2(@RequestParam("files") MultipartFile[] multipartFiles,@RequestParam("text1")String text1,Model model){
StringBuilder sb=new StringBuilder();//用于存储路径名,可以返回给前端显示图片 

if (multipartFiles.length>0){ for (MultipartFile multipartFile:multipartFiles){
//String localPath = "src/main/resources/static/images"; String localPath="C:/Users/asus/Desktop"; String filename=multipartFile.getOriginalFilename(); // 获得文件类型 String fileType = multipartFile.getContentType(); // 获得文件后缀名称 String suffix=filename.substring(filename.lastIndexOf(".")); String suffix2=filename.substring(filename.lastIndexOf(".")+1); //String imageName = fileType.substring(fileType.indexOf("/") + 1); String allowImgFormat = "gif,jpg,jpeg,png"; if (!allowImgFormat.contains(suffix2.toLowerCase())) { System.out.println( "上传的图片不符合格式要求" ); }
//随机生成的姓名
String uuid = UUID.randomUUID().toString().replaceAll("-", ""); String newFileName=uuid+suffix;
// 生成保存路径名
String realPath = path + "/" + newFileName;
File dest = new File(realPath);
//判断文件父目录是否存在
if(!dest.getParentFile().exists()){ dest.getParentFile().mkdirs();
}
try { //保存文件
multipartFile.transferTo(dest);
} catch (IllegalStateException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace();
}
System.out.println(path+" "+filename+" "+fileType+" "+newFileName); try { Thumbnails.of(realPath)//这里是压缩文件的插件,详情网上查一下 .size(120, 120) .toFile(path + "/compress" + newFileName); }
catch (IOException e) { e.printStackTrace();
} //读取相对路径
String getpath="/" + newFileName;//原图地址
String getcompresspath="/compress" + newFileName;//压缩图片的地址
System.out.println(getpath);
System.out.println(getcompresspath);
//return "redirect:/"+newFileName;
//model.addAttribute("img", "/" + newFileName);
sb.append(getpath+","+getcompresspath+";"); } }
//System.out.println(text1);
String msg=sb.toString();
sb.setLength(0);
System.out.println(msg);//输出本次保存的全部文件的图片地址与压缩图片地址
return msg;
}



全部评论

相关推荐

不愿透露姓名的神秘牛友
07-24 13:39
在记录秋招的大魔王很...:别被忽悠了,我做了多年销售。我可以告诉你,这就是忽悠你的,销售一定要看底薪也要看提成两者不可缺一。提成是有业绩的时候才拿的到的,谁能保证一直有单状态都好。销售有时候很讲究运气的。底薪是你这个人这个岗位日常工作体现的价值。别小看底薪,你看那些跳槽去做经理主管的,底薪底一些,人家愿意去吗?所以那些说销售靠提成的纯属忽悠,除非他们的业务很容易成单。
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
炫哥_:为什么都读硕士了?项目还是网上的项目(真心发问)
最后再改一次简历
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-23 13:41
求求各位大佬
gtgt..:硕士怎么会把简历写成这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务