欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringMVC框架五:图片上传与JSON交互

程序员文章站 2024-01-26 22:36:58
在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包,之前上传过的图片会丢失 为了解决这个问题:可以不在Tomcat下保存图片,而是另找一个目录。 上传图片: 在上传图片之前,需要在springMVC.xml中配置: 注意:这个id不能改成其他的,否则无效 除了 ......

在正式图片上传之前,先处理一个细节问题:

每一次发布项目,Tomcat都会重新解压war包,之前上传过的图片会丢失

为了解决这个问题:可以不在Tomcat下保存图片,而是另找一个目录。

 

上传图片:

<form method="post" enctype="multipart/form-data">
   <input type="file" name="pictureFile">
</form>

 

 

在上传图片之前,需要在springMVC.xml中配置:

    <!-- 上传图片配置实现类 -->
    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 上传图片的大小(单位:字节)-->
        <property name="maxUploadSize" value="5000000" />
    </bean>

注意:这个id不能改成其他的,否则无效

除了上传文件大小以外,还有其他几个参数,这里就不一一展示了

 

保存图片到F:/upload:

    @RequestMapping(value = "/upload")
    public ModelAndView upload(MultipartFile pictureFile) {
        // 保存图片

        // 防止重复,给图片id设为UUID
        String id = UUID.randomUUID().toString().replace("-", "");

        String exName = FilenameUtils.getExtension(pictureFile.getOriginalFilename());
        
        String name = id+"."+exName;
        
        try {
            pictureFile.transferTo(new File("F:\\upload\\" + name));
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        //保存ID到数据库
        //userService.savePicture(id);

        ModelAndView mav = new ModelAndView();
        mav.setViewName("success");
        return mav;
    }

 

为了方便获得文件扩展名,这里用了其他的包,如果自己写稍显麻烦:

SpringMVC框架五:图片上传与JSON交互

 

 

 

JSON交互:

首先要导入JSON需要的包:

SpringMVC框架五:图片上传与JSON交互

 

前端AJAX:

<script type="text/javascript">
$(function(){
    var params = '{"id": 1,"name": "测试商品","price": 99.9,"detail": "测试商品描述","pic": "123456.jpg"}';
    $.ajax({
        url : "${pageContext.request.contextPath }/json.action",
        data : params,
        contentType : "application/json;charset=UTF-8",
        type : "post",
        dataType : "json",
        success : function(data){
            alert(data.name);
        }
    });
});
</script>

 

 

Controller:

    //json交互
    @RequestMapping(value = "/json.action")
    public @ResponseBody 
    Items json(@RequestBody Items items) {
        //RequestBody注解,可以将json字符串解析到Items对象中
        //注意:Items的属性名必须和json的Key一致
        System.out.println(items);

        Items responseItem = new Items();
        items.setName("success");
        //ReponseBody注解:自动将对象封装成JSON字符串返回
        
        return responseItem;
    }