美文网首页java学习笔记整理
ssm+maven框架使用ajax请求上传文件

ssm+maven框架使用ajax请求上传文件

作者: _借东西的小人 | 来源:发表于2018-06-01 17:05 被阅读0次

上传图片的请求方式一般分为两种:
第一种是通过表单中的action跳转。
第二种是通过Ajax异步传输。
本篇文章使用的是第二种方式。
pom.xml中添加依赖

 <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

springmvc的配置文件

 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="utf-8"></property>
        <!-- 上传最大大小5M-->
     <!--   <property name="maxUploadSize" value="5242440"></property>-->
        <!--<property name="uploadTempDir" value="/upload"></property>-->
    </bean>

前台html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传与下载</title>
    <script src="js/jquery-2.1.1.min.js"></script>
</head>
<body>
<form id="uploadForm" enctype="mutipart/form-data">
    文件:<input type="file" name="fileName"/>
</form>
<button id="upload">上传文件</button>

<script type="text/javascript">
    $(function () {
        $("#upload").click(function () {
            var formData = new FormData($('#uploadForm')[0]);//序列化表单,将上传类型设置为文件对象
            $.ajax({
                type: 'post',
                url: "/upload.action",
                data: formData,
                cache: false,//文件不设置缓存
                processData: false,//数据不被转换为字符串
                contentType: false,//上传文件时使用,避免 JQuery 对其操作
            }).success(function (data) {
                alert("上传成功");
            }).error(function () {
                alert("上传失败");
            });
        });
    });
</script>
</body>
</html>

action文件

 @RequestMapping(value = "/upload.action")
    public @ResponseBody
    String update(@RequestParam(value = "fileName", required = false) MultipartFile file, HttpServletRequest request) throws IOException {
        String path = request.getServletContext().getRealPath("upload");//文件的上传路径
        System.out.println("path" + path);
        String fileName = file.getOriginalFilename();//获取文件名
        System.out.println("文件名" + fileName);
        String path1[] = path.split("\\\\");//对于特殊字符的分隔|  ^   $  *   .    (    )   \   /等都是正则表达式的一部分,只能通过前面加上\\进行转义。注意\要用三个\\\,也就是split(“\\\\”)
        String path2 = path1[path1.length - 1];//截取图片所在的文件夹名称
        File dir = new File(path, fileName);//将指定文件上传到指定的目录下
        /**
         * 如果文件夹不存在,自动创建该文件夹
         */
        if (!dir.exists()) {
            dir.mkdirs();
        }
        //MultipartFile自带的解析方法
        if (!file.isEmpty()) {
            file.transferTo(dir);
            return path2 + '\\' + fileName;
        } else {
            System.out.println("空文件");
            return "不允许上传空文件";
        }

    }

完整的代码已经上传至github,写的不好,欢迎指教。

相关文章

网友评论

    本文标题:ssm+maven框架使用ajax请求上传文件

    本文链接:https://www.haomeiwen.com/subject/hzeksftx.html