SSM框架上传视频(带进度条)

SSM框架上传视频,并且显示进度条,如下所示:

在这里插入图片描述
首先,配置spring-mvc.xml,如下所示,默认值是不超过500左右!
在这里插入图片描述

 <!-- 文件上传的配置 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 指定所上传文件的总大小不能超过500MB。注意maxUploadSize属性的限制不 是针对单个文件,而是所有文件的容量之和 -->
    <property name="maxUploadSize" value="524288000"></property>
    </bean>

JSP代码如下:
在这里插入图片描述

<!-- 视频上传 -->
			<div class="form-group" id="passwordDiv" style="width:100%">
				<label class="col-sm-2 control-label">上传视频:</label>
				<div class="col-xs-2">
				<input type="file" id="batchFile" >
		        <lable id="lableok" style="display: none">
		        <i class="glyphicon glyphicon-ok"></i>上传成功</lable>
				</div>
		    </div>
		    <div class="form-group" style="width:100%;margin-left:5%">
		    	<div class="col-xs-2">
		    	<div class="progress progress-striped active" style="display: none">
			    <div id="progressBar" class="progress-bar progress-bar-info"role="progressbar" aria-valuemin="0" aria-valuenow="0"aria-valuemax="100" style="width: 0%">
			        </div>
		      		</div>
		    	</div>
		    </div>
		    <div class="form-group" style="width:100%;margin-left:5%">
		    	<div class="col-xs-2">
		    		<input id="batchUploadBtn" type="submit" name="submit" class="btn btn-success" value="上传" />
		    	</div>
		    </div>
  		 </div>

点击上传按钮时,用JS对文件进行判断是否是视频类型,截取文件的后缀名进行判断,也可以用正则表达式。
在这里插入图片描述

 // 上传按钮
	    $("#batchUploadBtn").attr('disabled', true);
	    // 上传文件按钮点击的时候
	    $("#batchUploadBtn").click(function() {
		 var tv_id =document.getElementById('batchFile').value;//根据id得到值
		 var index= tv_id.indexOf("."); //(考虑严谨用lastIndexOf(".")得到)得到"."在第几位
		 tv_id=tv_id.substring(index); //截断"."之前的,得到后缀
		     if(tv_id!=".mp4"&&tv_id!=".rmvb"&&tv_id!=".avi"&&tv_id!=".ts"&& tv_id !=".mov" ){ //根据后缀,判断是否符合视频格式
		         alert("不是指定视频格式,重新选择"); 
		       return false;
		  }
	        // 进度条归零
	        $("#progressBar").width("0%");
	        // 上传按钮禁用
	        $(this).attr('disabled', true);
	        // 进度条显示
	        $("#progressBar").parent().show();
	        $("#progressBar").parent().addClass("active");
	        // 上传文件
	        UpladFile();
	    })
	     // 文件修改时
	    $("#batchFile").change(function() {
	        $("#batchUploadBtn").val("上传");
	        $("#progressBar").width("0%");
	        var file = $(this).prop('files');
	        if (file.length != 0) {
	            $("#batchUploadBtn").attr('disabled', false);
	        }
	    });
	     function UpladFile() {
	        var fileObj = $("#batchFile").get(0).files[0]; // js 获取文件对象
	        console.info("上传的文件:"+fileObj);
	        var FileController = "${ctx}/index/jindutiaoupload.do"; // 接收上传文件的后台地址 
	        var form = new FormData();
	        form.append("file", fileObj); // 文件对象
	        var xhr = new XMLHttpRequest();
	        xhr.open("post", FileController, true);
	        xhr.onload = function() {
	            $("#lableok").show();
	            $("#batchUploadBtn").attr('disabled', false);
	            $("#batchUploadBtn").val("上传");
	            $("#progressBar").parent().removeClass("active");
	            $("#progressBar").parent().hide();
	        };
	        xhr.upload.addEventListener("progress", progressFunction, false);
	        xhr.send(form);
	    };
	    
	    function progressFunction(evt) {
	        var progressBar = $("#progressBar");
	        if (evt.lengthComputable) {
	            var completePercent = Math.round(evt.loaded / evt.total * 100)+ "%";
	            progressBar.width(completePercent);
	            $("#batchUploadBtn").val("正在上传 " + completePercent);
	        }
	    };

如果修改成其他文件,继续保持原来页面状态。
在这里插入图片描述
确认上传且后缀名正确的时候,传到后台,进行上传本地
在这里插入图片描述
后台上传方法,我的路径是直接上传到Tomcat服务器的项目里,也可以上传到其他地方,在上传Tomcat的弊端就是,当项目从Tomcat移除后,可能上传的视频也就不存在,不建议上传Tomcat。
在这里插入图片描述

// 处理上传的
    @RequestMapping("/jindutiaoupload")
    public void uploadvideo(HttpServletResponse response,HttpServletRequest request,
            @RequestParam("file") CommonsMultipartFile file) throws IOException {
        PrintWriter out;
        boolean flag = false;
        if (file.getSize() > 0) {
        	request.getSession().getServletContext().getRealPath("/");
        	//路径
            String path = System.getProperty("user.dir").replace("bin", "webapps")+"\\testupload\\upload";
            //获取文件原名
			String fullName=file.getOriginalFilename();
			//获取扩展名称
			String ext=fullName.substring(fullName.lastIndexOf("."));
			//拼接文件保存的名称
			String fileName=System.nanoTime()+ext;
            try {
                FileUtils.copyInputStreamToFile(file.getInputStream(),
                        new File(path, fileName));
                flag = true;
            } catch (Exception e) {
            }
        }
        out = response.getWriter();
        if (flag == true) {
            out.print("1");
        } else {
            out.print("2");
        }
    }

上传成功后如下图所示:
在这里插入图片描述

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值