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


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

    每一次发布项目,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;
        }

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

    JSON交互:

    首先要导入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;
        }
  • 相关阅读:
    Apple Mac OS X每日一技巧002:如何修改打开文档的默认程序
    Baby听世界03:这就是电影啊??!!
    八卦一下,51JOB人才库搜索上海地区含有.NET关键字的期望收入和对应的人数
    接口和抽象类的区别
    总结virtual override sealed new在方法上的应用
    JQuery学习笔记01JQuery初接触
    《C#妹妹和ObjectiveC阿姨对话录》(03)NSString--再遇狗狗
    Mac新手常见问题
    Baby听世界01:产检
    Apple Mac OS X每日一技巧001:如何添加删除开机启动程序项
  • 原文地址:https://www.cnblogs.com/xuyiqing/p/9441657.html
Copyright © 2020-2023  润新知