zoukankan      html  css  js  c++  java
  • 文件上传

    1、pom.xml追加

    commons-fileupload

    commons-io

    commons-codec

    2、dispatcherservlet-servlet.xml追加

        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="maxUploadSize" value="2000000" />
            <property name="defaultEncoding" value="utf-8" />
        </bean>

    3、前端

        $('#logo').ajaxSubmit({
            type: "post",
            url: '/test',
            dataType: "json",
            success: function(resp) {
                alert(resp);
            }
        });
        <form id="logo" class="hide" method="post"
            enctype="multipart/form-data">
            <input name="file" type="file" />
            <input name="imageKind" type="hidden" value="1" />
            <button onclick="postFile()">click</button>
        </form>

    4、文件在控制器用以下形式作为参数

    @RequestParam("file") MultipartFile file

    5、工具类

    import java.io.File;
    import java.io.IOException;
    import org.apache.commons.codec.digest.DigestUtils;
    import org.springframework.web.multipart.MultipartFile;
    
    /**
     * 工具类:为MultipartFile,在转移和URI映射上,提供解决方案
     *
     * @author Deolin
     */
    public class FileUtil {
    
        private static String filename(MultipartFile file) {
            return file.getOriginalFilename();
        }
    
        private static String extension(MultipartFile file) {
            String filename = filename(file);
            return filename.substring(filename.lastIndexOf(".") + 1);
        }
    
        private static String md5(MultipartFile file) throws IOException {
            return DigestUtils.md5Hex(file.getInputStream());
        }
    
        private static String destFilename(MultipartFile file) throws IOException {
            return md5(file) + "." + extension(file);
        }
    
        /**
         * 将文件转移至[C:\upload-image],并以其MD5码作为文件名
         *
         * @param originFile 原MultipartFile对象
         * @throws IOException
         */
        public static void transferFrom(MultipartFile originFile) throws IOException {
            File destFile = new File(BasicsConstant.FILE_UPLOAD_FLODER + destFilename(originFile));
            if (!destFile.exists()) {
                originFile.transferTo(destFile);
            }
        }
    
        /**
         * 获取文件映射URI
         *
         * @param file MultipartFile对象
         * @return String URI
         * @throws IOException
         */
        public static String uri(MultipartFile file) throws IOException {
            return BasicsConstant.FILE_UPLOAD_URI + destFilename(file);
        }
    
    }

    6、如果需要将文件保存至本地,而不是webapp目录下的话,

    对于开发环境,需要在pom.xml的jetty-maven-plugin添加以下配置(示例)

    <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <configuration>
            <scanIntervalSeconds>2</scanIntervalSeconds>
            <webApp>
                <contextPath>/</contextPath>
                <defaultsDescriptor>
                    src/main/resources/jetty/webdefault.xml
                </defaultsDescriptor>
            </webApp>
            <stopKey>shutdown</stopKey>
            <stopPort>8085</stopPort>
            <contextHandlers>
                <contextHandler implementation="org.eclipse.jetty.webapp.WebAppContext">
                    <contextPath>/image</contextPath>
                    <resourceBase>C:upload-image</resourceBase>
                </contextHandler>
            </contextHandlers>
        </configuration>
    </plugin>

    对于部署环境,如tomcat,需要在%TOMCAT%confserver.xml的Host标签内添加以下标签

    <Context docBase="C:\upload-image" path="/image" reloadable="true"/>

    ※第6点出现的两个本地路径[c:upload-image],需要在第5点的工具类中出现[BasicsConstant.FILE_UPLOAD_FLODER]。

  • 相关阅读:
    jquery 获取当前元素的索引值
    JQuery中根据属性或属性值获得元素(6种情况获取方法)
    jquery如何获取某一个兄弟节点
    JAVA学习<六>
    JAVA学习<四>
    JAVA学习<三>
    iOS定位到崩溃代码行数
    Swift3.0基础语法学习<五>
    Swift3.0基础语法学习<四>
    Swift3.0基础语法学习<三>
  • 原文地址:https://www.cnblogs.com/deolin/p/7391422.html
Copyright © 2011-2022 走看看