Spring mvc文件上传

Spring mvc中上传文件:

1.Maven添加依赖

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

2.spring配置

<mvc:default-servlet-handler/>
<!-- 配置文件上传类型解析器 multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />


3.Controller上传实现

/**
 * @Description: 文件上传
 * @param common 文件上传参数
 * @param request
 * @return
 */
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String upload(RequestCommonDto common,HttpServletRequest request) throws MessageRecordException  {
    String result = null;
    try {
        if (request instanceof MultipartHttpServletRequest) {
            String directory = "media";
            MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
            // 获取上传的文件
            Map<String, MultipartFile> fileMap = multipartHttpServletRequest.getFileMap();
            // 如果文件格式合法进行处理
            for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()) {
                //生成唯一文件传输ID
                String fileTransferId = UUID.randomUUID().toString();
                fileNameList.add(fileTransferId);
                //获取文件后缀名
                String fileName = entry.getValue().getOriginalFilename();
                String suffix = fileName.substring(fileName.indexOf("."), fileName.length());
                
                // 获取文件需要上传到的路径
                String newName = fileTransferId + suffix;
                String filePath = request.getSession().getServletContext().getRealPath("/") + directory + "//"
                        + newName;
                // 转存文件
                entry.getValue().transferTo(new File(filePath));
            }
            //返回文件Ids
            result = Arrays.toString(fileNameList.toArray());
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}


4.页面Ajax提交上传

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传Test</title>
<!-- 引入依赖的Jquery和JQuery-Form -->
<script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.form/4.2.1/jquery.form.min.js" 
    integrity="sha384-tIwI8+qJdZBtYYCKwRkjxBGQVZS3gGozr3CtI+5JF/oL1JmPEHzCEnIKbDbLTCer" 
    crossorigin="anonymous"></script>
    
</head>
<body>
<div>
<form id="addForm" action="<%=basePath%>media/upload" method="POST" enctype="multipart/form-data">
    <!-- 可以是任意个文件域 -->
    <h3>上传设置</h3>
        上传文件:<input type="file" name="file1"/>
     <br>
    fileName<input id="fileName" type="text" name="fileName"  value="100" /> 
       <br>
    <input type="button" id="submitBtn" value="上传文件"/>
      <br>
</form>
 <br>
文件传输ID:<a id="download" href="javascript:void(0);"></a>

<!-- 自定义JavaScript -->
<script type="text/javascript">
    $("#submitBtn").on("click", function(){
        $("#download").attr("href","javascript:void(0);"); 
        $("#download").text("正在上传,请稍后...");
        var path = '<%=basePath%>upload/';
        $("#addForm").ajaxSubmit({
            success : function(data){
                $("#download").text(JSON.stringify(data));
            },
            error : function(){
                $("#download").text("文件过大,请上传小于50M文件!");
            }
        });
    });
</script>
</div>

</body>
</html>

配置完成,启动,上传!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值