多文件上传,基于springmvc(MultipartFile)

1.讲真,文件上传现在很少有人自己用 input type=”file” ,这个标签来自己手动写上传过程,一般都是使用了插件,美观,而且里面对各种需求的实现等都有很大的不同。但是今天还是用这个标签来说明文件上传。

2.首先是配置文件的处理

<!-- 处理文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <!--配置文件根据你的需求来配置
        //配置上传文件编码 
         <property name="defaultEncoding" value="UTF-8"/> 
         //配置文件大小的最大值
      <property name="maxUploadSize" value="10000000"/>-->   
  </bean> 

3.然后是前台页面的实现,使用input标签

<form action="" method="post" id="fo" enctype="multipart/form-data"> 
 <table >
    <tr>
        <td class="t_txt">选择文件:</td>
        <td> 
          <input type="file" title="选择要导入的文件" name="files" id="fload" multiple="multiple" />
          <input id="pBtn" type="button" value="导入" onclick="upload_excel()" />
            </td>
        </tr>                               
    </table>
</form>
//点击浏览选择文件,点击导入提交到后台。
//multiple="multiple",在input属性里面添加这一行,表示可以进行
    多文件上传,不然就只能上传单文件。
//enctype="multipart/form-data"表示后台是multipartfile来处理
然后是js代码控制,基于jquery
<script type="text/javascript">                     
    function upload_excel(){
        var fileNode = $("#fload");//获取选择的文件名
            if($.trim(fileNode.val()) == ""){
                    alert("请选择导入文件");
                    return;
                }
                v_file(fileNode.val());
            }

//验证文件格式问题,这里只让上传excel
    function v_file(val){
    //获取选择文件的名字的长度(.+格式 之前的部分)
        var frontPart = val.lastIndexOf(".");
        //检索字符串为空,则该方法返回 -1
        if(frontPart == -1){
                alert("文件名有误,请检查");                 
                return false;
            }   
        //截取文件名后面的部分(.+格式)          
        var lastPart = val.substring(frontPart);

//这里判断格式为xls,xlsx才让上传
if(lastPart != ".xls" && lastPart  != ".xlsx"){
        alert("文件格式有误:请上传.xls或.xlsx类型文件");                  
                    return false;
                }
    //提交表单到后台               
    $("#editForm").ajaxSubmit(function(data){ 
            alert(data.message);//弹出成功或者失败的信息                   
            //window.location.reload();//选择页面刷新
                });  
            }
</script>

这里写图片描述

4.后台处理部分

@RequestMapping("")
@ResponseBody
public Result tlist(HttpServletRequestrequest,HttpServletResponse response, @RequestParam(value="files",required = false) MultipartFile[] files) throws FileNotFoundException,IOException {
//上面的MultipartFile[] files为数组来接收多文件
// @RequestParam(value="files",required = false)注解必须要
    if(files != null && files.length>0){
        Result result = new Result();
        //遍历数组
         for(int i=0;i<files.length;i++){
         //将每一个文件分别放入file中
            MultipartFile file = files[i];
            //进入上传文件方法
                 result = saveFile(file,request);
                 if(result.isSuccess() == false){
                     return result;
                 }
            }
            return result;
        }
        return new Result("",false,"上传内容为空");
    }

//上传文件方法    
private Result saveFile(MultipartFilefile,HttpServletRequest request){
    if (!file.isEmpty()) {  
        try {
         // 文件保存路径
           String filePath=        request.getSession().getServletContext().getRealPath("/") +(后面是root下一级目录开始) "resources/test/";
           //获取文件名
         String fileName = file.getOriginalFilename(); 
          File tagetFile = new File(filePath,fileName);
           // 转存文件  
           file.transferTo(tagetFile);  
              return new Result("",true,"上传成功");
          } catch (Exception e) {               
             e.printStackTrace(); 
              return new Result("",false,"有异常,请处理");
            }              
        }  
        return new Result("",false,"上传失败");
    }
//这里Result是自定义的一个结果类

5.至此,文件上传成功,如果想上传其他的,在js判断的时候,选择你要的文件类型,至于单文件的上传,前面input属性去掉multiple=”multiple”,后台用MultipartFile files接收就可以了,我试过了excel,图片都没有问题。后续有问题再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值