首页 > 编程 > Java > 正文

SpringMvc MultipartFile实现图片文件上传示例

2019-11-26 12:55:54
字体:
来源:转载
供稿:网友

整理文档,搜刮出一个SpringMvc MultipartFile实现图片文件上传示例,稍微整理精简一下做下分享。

spring-servlet.xml

<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->  <bean id="multipartResolver"    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <property name="defaultEncoding" value="UTF-8" />    <!-- 指定所上传文件的总大小,单位字节。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->    <property name="maxUploadSize" value="10240000" />  </bean>

upload/index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>单图片上传</title></head><body><fieldset><legend>图片上传</legend><h2>只能上传单张10M以下的 PNG、JPG、GIF 格式的图片</h2><form action="/shop/auth/photoUpload" method="post" enctype="multipart/form-data">  选择文件:<input type="file" name="file">  <input type="submit" value="上传"> </form></fieldset></body></html>

或者使用ExtJs

js/user/photoUpload.js

Ext.onReady(function(){  Ext.create('Ext.form.Panel', {    title: '图片上传',    width: 600,    bodyPadding: 10,    frame: true,    renderTo: Ext.getBody(),    items: [{      xtype: 'filefield',      name: 'file',      fieldLabel: 'Photo',      labelWidth: 50,      msgTarget: 'side',      fileUpload: true ,      allowBlank: false,      blankText:"Select an image",      emptyText: 'You can only upload a single PNG 10M or less, JPG, GIF format images',      anchor: '100%',      buttonText: '选择图片'    }],    buttons: [{      text: '上传',      handler: function() {        var form = this.up('form').getForm();        if(form.isValid()){          form.submit({            url: '/shop/auth/photoUpload',            waitMsg: '正在上传图片...',            success: function(fp, o) {              Ext.Msg.alert('提示', o.result.msg);            }          });        }      }    }]  });});

pages/user/photoUpload.html

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>图片上传</title></head><link href="../../ext-4.2.1.883/resources/css/ext-all.css" rel="external nofollow" rel="stylesheet"  type="text/css" /><script type="text/javascript" src="../../ext-4.2.1.883/ext-all.js"></script><script src="../../js/user/photoUpload.js" type="text/javascript"></script><body></body></html>

AuthController.java

/**   * 图片文件上传   */  @ResponseBody  @RequestMapping(value = "/photoUpload",method = RequestMethod.POST)  public ResultData<Object> photoUpload(MultipartFile file,HttpServletRequest request,HttpServletResponse response,HttpSession session) throws IllegalStateException, IOException{    ResultData<Object> resultData=new ResultData<>();    // 判断用户是否登录    /*User user=(User) session.getAttribute("user");    if (user==null) {      resultData.setCode(40029);      resultData.setMsg("用户未登录");      return resultData;    }*/    if (file!=null) {// 判断上传的文件是否为空      String path=null;// 文件路径      String type=null;// 文件类型      String fileName=file.getOriginalFilename();// 文件原名称      System.out.println("上传的文件原名称:"+fileName);      // 判断文件类型      type=fileName.indexOf(".")!=-1?fileName.substring(fileName.lastIndexOf(".")+1, fileName.length()):null;      if (type!=null) {// 判断文件类型是否为空        if ("GIF".equals(type.toUpperCase())||"PNG".equals(type.toUpperCase())||"JPG".equals(type.toUpperCase())) {          // 项目在容器中实际发布运行的根路径          String realPath=request.getSession().getServletContext().getRealPath("/");          // 自定义的文件名称          String trueFileName=String.valueOf(System.currentTimeMillis())+fileName;          // 设置存放图片文件的路径          path=realPath+/*System.getProperty("file.separator")+*/trueFileName;          System.out.println("存放图片文件的路径:"+path);          // 转存文件到指定的路径          file.transferTo(new File(path));          System.out.println("文件成功上传到指定目录下");        }else {          System.out.println("不是我们想要的文件类型,请按要求重新上传");          return null;        }      }else {        System.out.println("文件类型为空");        return null;      }    }else {      System.out.println("没有找到相对应的文件");      return null;    }    return resultData;  }

ResultData.java 代码如下:

public class ResultData<T> { private T data; private int code =200; private String msg; private Boolean success = true; public Boolean getSuccess() { return success; } public void setSuccess(Boolean success) { this.success = success; } public T getData() { return data; } public void setData(T data) { this.data = data; } public int getCode() {  return code; } public void setCode(int code) { if(200 != code){  success = false; } this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表