前台表單:
1 <form id="uploadform" method="post" enctype="multipart/form-data"> 2 上傳視頻:<input type="file" id="file" name="file" onchange="uploadfile()"/> 3 進度: 4 <progress id="progressBar" value="0" max="100"></progress> 5 <span id="percentage"></span> 6 </form>
js代碼:
<script type="text/javascript"> function uploadfile() { var fileObj = document.getElementById("file").files[0]; // js 獲取文件對象 var FileController = "teacher/uploadvideo.action"; // 接收上傳文件的后台地址 // FormData 對象 var form = new FormData($( "#uploadform" )[0]); // XMLHttpRequest 對象 var xhr = new XMLHttpRequest(); xhr.open("post", FileController, true); xhr.onload = function () { // alert("上傳完成!"); }; xhr.upload.addEventListener("progress", progressFunction, false); xhr.send(form); } function progressFunction(evt) { var progressBar = document.getElementById("progressBar"); var percentageDiv = document.getElementById("percentage"); if (evt.lengthComputable) { progressBar.max = evt.total; progressBar.value = evt.loaded; percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%"; if(evt.loaded==evt.total){ alert("上傳完成100%"); } } } </script>
后台(這個傳的opid是教師編號,這些代碼是我從自己的項目中提取出來的,但知識是一樣的):
@RequestMapping("/teacher/uploadvideo") public void uploadVideo(@RequestParam("file") MultipartFile uploadFile,String opid,HttpServletRequest request) throws IllegalStateException, IOException { System.out.println(opid); //獲取文件初始名稱 String originalFileName = uploadFile.getOriginalFilename(); Operation ope = operationService.getOpeByid(opid); String video = ope.getVideourl(); String houzhui = originalFileName.substring(originalFileName.lastIndexOf(".")); //上傳文件 String newFileName = UUID.randomUUID()+houzhui; File newFile = new File(videoUrl,newFileName); uploadFile.transferTo(newFile); //刪除原有文件 String oldVideoUrl = videoUrl + "/" + video; File videoFile = new File(oldVideoUrl); if(videoFile.exists()) { videoFile.delete(); } ope.setVideourl(newFileName); operationService.modify(ope); }