zoukankan      html  css  js  c++  java
  • 文件的上传和回显

    这里文件的上传和回显主要讲是在编辑器中的

    1.导入相应的jar包

    <!-- 时间操作组件 -->
                <dependency>
                    <groupId>joda-time</groupId>
                    <artifactId>joda-time</artifactId>
                    <version>2.5</version>
                </dependency>
    
    
                <!-- Apache工具组件 -->
                <dependency>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-lang3</artifactId>
                    <version>3.3.2</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-io</artifactId>
                    <version>1.3.2</version>
                </dependency>
                <!-- 图片上传的依赖 -->
                <dependency>
                    <groupId>commons-fileupload</groupId>
                    <artifactId>commons-fileupload</artifactId>
                    <version>1.3.2</version>
                </dependency>

    2.在springMVC的配置文件中配置

    <!-- 文件上传解析器 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="20971520"/>
        </bean>

    3.bean中的工具类

    package com.taotao.common.bean;
    
    public class PicUploadResult {
        
        private Integer error;//判断你上传的文件格式是否正确
        
        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;
        }
        
        
    
    }

    4.controller层的具体应用

    package com.taotao.manage.controller;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.Date;
    
    import javax.imageio.ImageIO;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.lang3.RandomUtils;
    import org.apache.commons.lang3.StringUtils;
    import org.joda.time.DateTime;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.MediaType;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.multipart.MultipartFile;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.taotao.common.bean.PicUploadResult;
    import com.taotao.manage.service.PropertiesService;
    
    
    /**
     * 图片上传 1.引入依赖的jar包 2.在配置文件中配置文件上传解析器  3.控制层
     */
    @Controller
    @RequestMapping("/pic")
    public class PicUploadController {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(PicUploadController.class);
    
        @Autowired
        private PropertiesService propertiesService;
    private static final ObjectMapper mapper = new ObjectMapper(); // 允许上传的格式 private static final String[] IMAGE_TYPE = new String[] { ".bmp", ".jpg", ".jpeg", ".gif", ".png" }; @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public String upload(@RequestParam("uploadFile") MultipartFile uploadFile , HttpServletResponse response) throws Exception { // 校验图片格式 boolean isLegal = false; for (String type : IMAGE_TYPE) { if (StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(), type)) { isLegal = true; break; } } // 封装Result对象,并且将文件的byte数组放置到result对象中 PicUploadResult fileUploadResult = new PicUploadResult(); // 状态 fileUploadResult.setError(isLegal ? 0 : 1); // 文件新路径 String filePath = getFilePath(uploadFile.getOriginalFilename()); if (LOGGER.isDebugEnabled()) { LOGGER.debug("Pic file upload .[{}] to [{}] .", uploadFile.getOriginalFilename(), filePath); } // 生成图片的绝对引用地址 因为我没有配置图片服务器. ngnix配置 String picUrl = StringUtils.replace(StringUtils.substringAfter(filePath, propertiesService.IMAGE_REPOSITORY), "\", "/"); fileUploadResult.setUrl(propertiesService.IMAGE_URL + picUrl); File newFile = new File(filePath); // 写文件到磁盘 uploadFile.transferTo(newFile); // 校验图片是否合法 isLegal = false; try { BufferedImage image = ImageIO.read(newFile); if (image != null) { fileUploadResult.setWidth(image.getWidth() + ""); fileUploadResult.setHeight(image.getHeight() + ""); isLegal = true; } } catch (IOException e) { } // 状态 fileUploadResult.setError(isLegal ? 0 : 1); if (!isLegal) { // 不合法,将磁盘上的文件删除 newFile.delete(); } response.setContentType(MediaType.TEXT_HTML_VALUE); return mapper.writeValueAsString(fileUploadResult); } private String getFilePath(String sourceFileName) { String baseFolder = propertiesService.IMAGE_REPOSITORY + File.separator + "images"; Date nowDate = new Date(); // yyyy/MM/dd String fileFolder = baseFolder + File.separator + new DateTime(nowDate).toString("yyyy") + File.separator + new DateTime(nowDate).toString("MM") + File.separator + new DateTime(nowDate).toString("dd"); File file = new File(fileFolder); if (!file.isDirectory()) { // 如果目录不存在,则创建目录 file.mkdirs(); } // 生成新的文件名 String fileName = new DateTime(nowDate).toString("yyyyMMddhhmmssSSSS") + RandomUtils.nextInt(100, 9999) + "." + StringUtils.substringAfterLast(sourceFileName, "."); return fileFolder + File.separator + fileName; } }

    5.在以上controller层中引入的属性文件应用的两种方式

    属性文件env.properties

    image_repository=D:\bigdata6\taotao-upload
    image_url=http://image.taotao.com

    在spring的配置文件applicationContext.xml中引入该属性文件

    <!-- 引入属性文件 -->
         <context:property-placeholder location="classpath:*.properties"/>

    第一种

    在service层中建立PropertiesService.java

    package com.taotao.manage.service;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.stereotype.Service;
    
    @Service
    public class PropertiesService {
        @Value("${image_repository}") //读取属性文件的值
        public String IMAGE_REPOSITORY;
        
        @Value("${image_url}") //读取属性文件的值
        public String IMAGE_URL;
        
    }

    在controller层中加入

    @Autowired
    private PropertiesService propertiesService;

    第二种

    要先在springMVC的配置文件中加入

    <!-- 引入属性文件 -->
         <context:property-placeholder location="classpath:env.properties"/>

    在controller层中直接加入

    @Value("${image_repository}") //读取属性文件的值
        public String IMAGE_REPOSITORY;
        
        @Value("${image_url}") //读取属性文件的值
        public String IMAGE_URL;
  • 相关阅读:
    (转)在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 定位指定的服务器/实例时出错)
    C++面试题集(最全的C\C++试题集和答案)
    linq
    sqlserver 读取多个表的分页存储过程(参考)
    xml xslt linqxml
    .net 文件操作的一点记录
    HTTP压缩
    图片防盗链
    随笔
    datareader 与 应用程序池
  • 原文地址:https://www.cnblogs.com/sitian2050/p/11668326.html
Copyright © 2011-2022 走看看