SpringMVC 上传文件

来源:互联网 发布:mac qq企业邮箱设置 编辑:程序博客网 时间:2024/06/16 02:05

SpringMVC 上传文件

1)maven依赖包

<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.1</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>

2)spring-mvc.xml

<!-- json 转化器 -->
<bean id="stringConverter"
class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
<bean id="mappingJackson2HttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>text/json;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 自动装配配置 -->
<bean
class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />


<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="mappingJackson2HttpMessageConverter" />
<ref bean="stringConverter" />
</list>
</property>
</bean>


<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 指定所上传文件的总大小不能超过1024*1024*10=10MB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="-1" />
<!--被允许的最大的内存的大小,Default is 10240 bytes -->
<property name="maxInMemorySize" value="10240" />
</bean>

3)system.properties

#图片上传路劲
uploadPath=/server/hscloudprint/images

4)CommonController 

package com.hs.web.controller;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.hs.service.InstructionService;
import com.hs.utils.Md5FileUtil;
import com.hs.utils.PropertyUtil;
/**
 * 通用数据管理
 * 
 * @author cf
 * 
 */
@Controller
@RequestMapping(value = "/common")
public class CommonController extends BaseController {
private static Logger logger = LoggerFactory
.getLogger(CommonController.class);
@Autowired
private InstructionService InstructionService;
/**
* 上传图片

* @return
*/
@RequestMapping("/image/upload")
@ResponseBody
public String addImage(HttpServletRequest request)
throws IllegalStateException, IOException {
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
MultipartFile file = multipartHttpServletRequest.getFile("filename");


// imageId为文件md5值
String imageId = "";
try {
imageId = Md5FileUtil.getMD5(file.getInputStream());
} catch (IOException e) {
logger.error("数据解析出错", e);
}
// 保存目录处理
DateFormat fm = new SimpleDateFormat("yyyyMM");
String fileDir = PropertyUtil.getProperiesValue("uploadPath",
"system.properties") + "/upload/image/" + fm.format(new Date());
File targetDirPath = new File(fileDir);
if (!targetDirPath.exists()) {
targetDirPath.mkdirs();
}
String suffixName = getSuffixName(file.getOriginalFilename());
// 数据库记录图片
try {
file.transferTo(new File(fileDir + "/" + imageId + suffixName));
} catch (IllegalStateException e) {
logger.error("数据解析出错", e);
} catch (IOException e) {
logger.error("数据解析出错", e);
}
return createSuccessResultJSON(null);
}
}

postman返回数据



0 0
原创粉丝点击