Java实现文件上传:处理图片的代码示例
"该资源是一个Java代码示例,用于处理文件上传,特别是图片上传的功能。代码通过MultipartHttpServletRequest接收文件,并对上传的文件进行大小和格式检查,确保安全性和有效性。" 在Java Web开发中,文件上传是一项常见的功能,通常涉及到表单提交、多部分请求处理以及文件存储策略。这个代码片段展示了如何使用Spring MVC框架来处理文件上传请求,主要涉及以下几个知识点: 1. **MultipartHttpServletRequest**: 这是Spring MVC提供的一种特殊类型的HttpServletRequest,专用于处理HTTP多部分请求(multipart/form-data),这种请求类型常用于文件上传。通过`request.getFile()`方法,我们可以获取到上传的文件对象。 2. **字符编码设置**: `request.setCharacterEncoding("UTF-8")`确保了请求参数的编码方式,防止中文乱码问题。 3. **响应设置**: `response.setContentType("text/html;charset=UTF-8")`设置了响应的类型和编码,这里是返回JSON格式的数据,因此设置为HTML类型,同时指定UTF-8编码。 4. **PrintWriter**: 使用`response.getWriter()`获取到一个用于写入响应体的PrintWriter对象,这里用来返回JSON字符串。 5. **文件保存路径**: `savePath`变量定义了上传文件的保存路径,这里使用了`getRealPath("/")`获取到应用的根目录,然后添加了"uploadImages"子目录。 6. **文件参数获取**: `updateP`参数用于指定上传的文件字段名,通过`request.getParameter()`获取。 7. **文件大小检查**: 检查上传文件大小是否超过10MB,如果超过则返回错误信息。 8. **文件名和扩展名处理**: `fileName`是原始文件名,`fileNameSuffix`是文件的扩展名。通过`indexOf(".")`和`substring()`方法获取。 9. **文件格式验证**: 使用正则表达式检查文件扩展名是否为合法的图片格式(如png或jpg)。`Pattern.compile()`和`matcher.find()`用于进行匹配。 10. **文件存储**: 如果文件格式和大小都符合要求,理论上会将文件存储到指定路径下。但在这个代码片段中,实际的文件保存逻辑没有完整展示出来,通常会调用`MultipartFile`的`transferTo()`方法将文件保存到服务器。 这个代码示例可以作为一个基础模板,开发者可以根据实际需求进行扩展,例如添加错误处理、文件重命名策略、存储到云服务等。在实际开发中,还需要考虑安全性问题,如防止文件覆盖、非法文件上传等。
@RequestMapping("/uploadImg.do")
public void uploadImg(MultipartHttpServletRequest request,HttpServletResponse response) throws IOException{
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//保存路径
String savePath = request.getSession().getServletContext()
.getRealPath("/")
+ "uploadImages\\";
String updateP = request.getParameter("updateP");
String fileNameSuffix=null;
String fileName= null;
if(null!=updateP&&!"".equals(updateP)){
try {
MultipartFile mf = request.getFile(updateP);
long nt=mf.getSize();
if (nt>1024*1024*10) {
out.write("{'state':'1','errorStr':'图片大小能超过10MB!'}");
return ;
}
fileName=mf.getOriginalFilename();
//获取后缀
String fileSuffix=fileName.substring(fileName.indexOf(".")+1,fileName.length());
Pattern pattern = Pattern.compile("png|jpg");
Matcher matcher = pattern.matcher(fileSuffix.toLowerCase());
//判断是否格式正确
if(null!=mf&&!"".equals(mf)&&matcher.find()){
//utilTest.getFileName 获得时间+随机码 生成文件名称
fileNameSuffix=getFileName(fileName);
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 0
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦