eclipse中 Maven项目SSM框架中文件上传简单实现之一Form表单形式上传

前提是项目已经搭建好SSM框架,因为只是简单地记录知识点,所以内容没有特别详细

1、在pom.xml文件中添加文件上传的Jar包:

	<dependency>
 		 <groupId>commons-fileupload</groupId>
 	 	<artifactId>commons-fileupload</artifactId>
  		<version>1.3.2</version>
 	 	<classifier>sources</classifier>
	</dependency>

2、SpringMVC的配置文件中添加  文件上传解析器

<!-- 定义文件上传解析器 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 设定默认编码 -->
		<property name="defaultEncoding" value="UTF-8"></property>
		<!-- 设定文件上传的最大值10MB,10*1024*1024 -->
		<property name="maxUploadSize" value="10485760"></property>
	</bean>
3、前台代码 upload.jsp中添加文件上传按钮

<form action="/user/toUpload" enctype="multipart/form-data" >
<input type="file" name="uploadFile">
<input type="submit" value="提交">
</form>

4、后台代码Controller中添加后台处理

	@RequestMapping("/pic/upload")
	@ResponseBody
	public PicUploadResult fileUpload(MultipartFile uploadFile){
		/**
		 * 文件上传的步骤
		 * 1、采用文件正确的接收方式接收(修改3处:配置文件/接口类型)
		 * 2、判断是否是一个图片:0表示无异常,1表示异常(jpg|png|gif)
		 * 3、判断是不是一个“正经”的图片:判断是否有width和height
		 * 4、编辑磁盘目录D:jt_image/images/yyyy/MM/dd/HH/mm
		 * 5、编辑相对路径url:http://image.jt.com/images/yyyy/MM/dd/HH/mm
		 * 6、将文件保存
		 */
		PicUploadResult picUpload = new PicUploadResult();
		//1、获取文件名称
		String fileName = uploadFile.getOriginalFilename();
		//2、获取后缀名称
		String endName = fileName.substring(fileName.lastIndexOf("."));
		//3、判断是否为图片格式
		if(!endName.matches("^.*(jpg|png|gif)$")){
			picUpload.setError(1);
			logger.error("图片格式有误");
			return picUpload;
		}
		//4、判断文件是否为一个正确的图片
		try {
			//将文件转换为图片流的格式
			BufferedImage bufferedImage = ImageIO.read(uploadFile.getInputStream());
			//获取宽度和高度,如果获取时有问题,则报异常!
			int width = bufferedImage.getWidth();
			int height = bufferedImage.getHeight();
			
			picUpload.setWidth(width+"");
			picUpload.setHeight(height+"");
			
			String localPath = "D:/jt_image/images/";
			String datePath = new SimpleDateFormat("yyyy/MM/dd/HH/mm").format(new Date());
			localPath += datePath+"/"+fileName;
			String urlPath = "http://image.jt.com/images/";
			urlPath += datePath+"/"+fileName;
			
			File file = new File(localPath);
			
			//判断文件夹是否存在
			if(!file.exists()){
				//创建多个文件夹
				file.mkdirs();
			}
			
			//将文件写入
			uploadFile.transferTo(file);
			picUpload.setUrl(urlPath);
			logger.info("~~~~~~~~~文件写入成功!" + localPath);
			return picUpload;
		} catch (IOException e) {
			e.printStackTrace();
			logger.error("~~~~~~~~该文件非法!");
			picUpload.setError(1);
			return picUpload;
		}
	}
5、PicUploadResult类返回json格式:

public class PicUploadResult {
    private Integer error=0;		//图片上传错误不能抛出,抛出就无法进行jsp页面回调,所以设置这个标识,0表示无异常,1代表异常
    private String url;		//应该是浏览器能够正常解析的具体页面路径
    private String width;
    private String height;

    public Integer getError() {
        return error;
    }

    public void setError(Integer error) {
        this.error = error;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getWidth() {
        return width;
    }

    public void setWidth(String width) {
        this.width = width;
    }

    public String getHeight() {
        return height;
    }

    public void setHeight(String height) {
        this.height = height;
    }

}




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值