1. 程式人生 > >基於springboot小程式上傳視訊

基於springboot小程式上傳視訊

第一步:前端內容

 <!-- 上傳視訊 -->
                <cover-image src='../resource/images/camera.png' style='width:50rpx;height:50rpx;' bindtap='upload'></cover-image>

第二步:後端內容

@PostMapping(value="/upload",headers="content-type=multipart/form-data")
	public LpyJSONResult upload(String userId,
			String bgmId,String videoSeconds,
			int videoWidth,int videoHeight,
			String desc,
            @ApiParam(value="短視訊",required=true)
			MultipartFile file) throws Exception {
		if(StringUtils.isBlank(userId)) {
			return LpyJSONResult.errorMsg("使用者id不能為空");
		}
		//定義我們的名稱空間,所有的檔案都可以上傳在這之下
		String fileSpace="D:/java_all/workspace-wxxcs/video-space";
		//儲存到資料庫中的相對路徑(在名稱空間每個不同使用者存的檔案)
		String uploadPathDB="/"+userId+"/video";
		String coverPathDB="/"+userId+"/video";
	    FileOutputStream fileOutputStream=null;
	    InputStream inputStream=null;
	    //檔案上傳的最終儲存路徑
	    String finalVideoPath="";
		try {
			if(file!=null) {
			    //獲取檔名
			    String name=file.getOriginalFilename();
			    //分隔路徑
			    String[] one=name.split("\\/");  
			    String fileName=one[one.length-1];
			    //獲取字首
			    String fileNamePrefix=fileName.split("\\.")[0];
			    
			    if(StringUtils.isNotBlank(fileName)) {
			    	//檔案上傳的最終儲存路徑
			    	finalVideoPath=fileSpace+uploadPathDB+"/"+fileNamePrefix+".mp4";
			    	//設定資料庫儲存的路徑
			    	uploadPathDB += ("/"+fileNamePrefix+".mp4");
			    	coverPathDB=coverPathDB+"/"+fileNamePrefix+".jpg";
			    	File outFile = new File(finalVideoPath);
			    	if(outFile.getParentFile()!=null ||!outFile.getParentFile().isDirectory()) {
			    		//建立父資料夾
			    		outFile.getParentFile().mkdirs();
			    	}
			    	//檔案輸出
			    	fileOutputStream = new FileOutputStream(outFile);
			    	inputStream = file.getInputStream();
			    	IOUtils.copy(inputStream, fileOutputStream);
			    }
			}else {
				return LpyJSONResult.errorMsg("上傳出錯");
			}
		} catch (Exception e) {
			e.printStackTrace();
			return LpyJSONResult.errorMsg("上傳出錯");
		}finally {
			if(fileOutputStream!=null) {
				fileOutputStream.flush();
				fileOutputStream.close();
			}
		}