頁面:
上傳文件時的關鍵詞:Enctype =“ Multipart/form-data”
<%@ page Lagansy =“ java” import =“ java.util。 字符串basepath = request.getScheme()+“://”+request.getServername()+“:”+request.getServerport() nofollow“> <title> </title> <meta http-equiv =“ pragma” content =“ no-cache”> <meta http-equiv =“ cache-control” content =“ no-cache”> <meta http-equiv =“ content =“關鍵字1,關鍵字2,鍵word3”> <meta http-equiv =“ descript Enctype =“ Multipart/form-data”> <div align =“ center”> <div> <div> <input type =“ file” name =“ file” id =“ file”> <br> <br> <br> <br> <br> <br>
後台:
控制器
導入javax.servlet.http.httpservletrequest; import model.fileentity; import org.springframework.stringframework.stereotype.controller; import org.springframework.ui.modelmap; import org org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.modelandview;@controller@controller@requestmapping(“/uploadflv”)public class class class uploadController {@requestmapping(value =“/upload”,method =“/upload. MultipartFile MultipartFile,httpservletrequest request,modelmap映射){字符串消息=“”; fileentity entity = new fileentity(); fileUploadTool fileuploadtool = new FileUploadTool();嘗試{entity = fileuploadtool.createfile(MultipartFile,request); if(entity!= null){// service.savefile(entity);消息=“上傳成功”; map.put(“實體”,實體); map.put(“結果”,消息); } else {message =“上傳失敗”; map.put(“結果”,消息); }} catch(異常e){e.printstacktrace(); }返回新的modelAndView(“結果”,地圖); }}}工具類
import java.io.File;import java.io.IOException;import java.sql.Timestamp;import java.text.DecimalFormat;import java.util.Arrays;import java.util.Iterator;import javax.servlet.http.HttpServletRequest;import model.FileEntity;import org.springframework.web.multipart.multipartfile; public class fileUploadTool {transfmediatool transfmediatool = new transfmediatool(); //文件最大500m私有靜態long upload_maxsize = 800 * 1024 * 1024; //文件允許格式私有靜態字符串[]允許files = {“ .rar”,“ .doc”,.docx“,” .zip“,” .pdf“,” .txt“ .swf”,“ .xlsx”,“ .gif”,“ .gif”,“ .gif”,“ .png”,.png“ .png”,“ .jpg”,“ .jpg”,“ .jpeg”,“ .jpeg”,“”,“”。 “ .flv”,“ .ppt”,“ .avi”,“ .mpg”,“ .wmv”,“ .3GP”,“ .MOV”,“ .ASF”,“ .ASX”,“ .VOB”,“ .WMV9”,“ .WMV9”,“ .RM”,“ .RM”,“ .RMVB”}}; // 允許轉碼的視頻格式( ffmpeg)私有靜態字符串[] lassionflv = {“ .avi”,“ .mpg”,“ .wmv”,“ .3GP”,“ .MOV”,“ .MOV”,“ .ASF”,“ .ASX”,“ .VOB”}; //允許的視頻轉碼格式(mencoder)private static String [] allowavi = {“ .wmv9”,“ .rm”,“ .rmvb”}; public fileentity createFile(MultipartFile MultipartFile,httpservletrequest request){fileentity entity = new fileNentity(); boolean bflag = false;字符串fileName = multipartFile.getOriginalFileName()。 toString(); //判斷文件不為空if(multipartFile.getSize()!= 0 &&!promptratfile.isempty()){bflag = true; //判斷文件大小if(multipartfile.getSize()<= upload_maxsize){bflag = true; //文件類型判斷If(this.checkfiletype(filename)){bflag = true; } else {bflag = false; system.out.println(“文件類型不允許”); }} else {bflag = false; system.out.println(“文件大小超範圍”); }} else {bflag = false; system.out.println(“文件為空”); } if(bflag){字符串logopathdir =“/video/”;字符串logorealpathdir = request.getSession()。 getServletContext()。 getRealPath(logopathdir); //上傳到本地磁盤//字符串logorealpathdir =“ e:/upload”;文件logosavefile =新文件(logorealpathdir); if(!logoSaveFile.exists()){logosavefile.mkdirs(); }字符串名稱= filename.substring(0,filename.lastIndexof(“。”)); system.out.println(“文件名稱:” +名稱); //新的文件名字符串newfileName = this.getName(filename); //文件擴展名字符串fileend = this.getFileext(filename); //絕對路徑字符串filenamedirs = logorealpathdir + file.separator + newfilename + fileend; system.out.println(“:” + filenamedirs);文件filedirs =新文件(fileNamedirs); //轉入文件嘗試{multipartfile.transferto(filedirs); } catch(illegalstateException e){e.printstacktrace(); } catch(ioexception e){e.printstacktrace(); } //相對路徑entity.setType(fileEnd);字符串filedir = logopathdir + newfileName + fileend; StringBuilder Builder = new StringBuilder(FileDir);字符串FinalFileDir = Builder.Substring(1); //大小存儲為字符串大小= this.getSize(filedirs); //源文件保存路徑字符串avipath = filedirs.getabsolutepath(); //轉碼avi // boolean flag = false; if(this.checkavitype(fileEnd)){// a avi codcavipath = logorealpathdir + file.separator + newfilename +“ .avi”; // 獲取配置的轉換工具( mencoder.exe)的存放路徑字符串mencoderpath = request.getSession()。 getservletContext()。 getRealPath(“/tools/tools/tools/mencoder.exe”); avipath = transfmediatool.processavi(mencoderpath,filedirs.getabsolutepath(),codcavipath); fileend = this.getFileext(codcavipath); } if(avipath!= null){// flv if(this.checkmediatype(fileEnd)){try {//設置轉換為flvflv格式後文件的保存路徑stringcodcfilepath = logorealpathdir + file.separator.separator + separator + newfileName + newfileName +“ .flv”; // 獲取配置的轉換工具( ffmpeg.exe)的存放路徑字符串ffmpegpath = request.getSession()。 getServletContext()。 getRealPath(“/tools/tools/ffmpeg.exe”); transfmediatool.processflv(ffmpegpath,avipath,codcfilepath); filedir = logopathdir + newfileName +“ .flv”; builder = new StringBuilder(FileDir); FinalFileDir = Builder.Substring(1); } catch(異常E){e.printstacktrace(); }} entity.setsize(size); Entity.SetPath(FinalFileDir); Entity.setTitleorig(name); entity.setTitlealter(newfileName); Timestamp Timestamp = new Timestamp(System.CurrentTimeMillis()); entity.setuploadtime(時間戳);返回實體; } else {return null; }} else {return null; }} / ** * * * * * @param fileName * @return * / private boolean checkfiletype(string fileName){iterator <string> type = arrays = arrays.aslist.aslist(wallefiles).Iterator().iterator(); while(type.hasnext()){字符串ext = type.next(); if(filename.tolowercase()。endswith(ext)){返回true; }}返回false; } / ** *視頻類型判斷(flv) * * @param fileName * @return * / private boolean checkmediatype(string fileEnd){iterator <string> type = arrays = arrays = arrays.aslist(wellyflv).Iterator(); while(type.hasnext()){字符串ext = type.next(); if(fileend.equals(ext)){返回true; }}返回false; } / ** *視頻類型判斷(avi) * * @param fileName * @return * / private boolean checkavitype(string fileend){iterator <string> type = type = arrays = arrays.aslist(allyavi).Iterator(); while(type.hasnext()){字符串ext = type.next(); if(fileend.equals(ext)){返回true; }}返回false; } / ** * * * * * @return String * / private String getFileext(string fileName){return fileName.substring(filename.lastindexof(“。”)); } / ** *依據原始文件名生成新文件名 * @return * / private string getName(字符串fileName){iterator <string> type = arrays.aslist.aslist(lassionfiles).iterator(); while(type.hasnext()){字符串ext = type.next(); if(filename.contains(ext)){字符串newfileName = filename.substring(0,filename.lastindexof(ext));返回newfilename; } } 返回 ””; } / ** *文件大小,返回kb.mb * * @return * / private string getsize(file file){字符串size =“”;長fileLength = file.length(); Demalformat df = new demalformat(“#。00”); if(fileLength <1024){size = df.format(((double)fileLength) +“ bt”; } else if(fileLength <1048576){size = df.format(((double)fileLength / 1024) +“ kb”; } else if(fileLength <1073741824){size = df.format(((double)fileLength / 1048576) +“ mb”; } else {size = df.format(((double)fileLength / 1073741824) +“ gb”; }返回大小; }}import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class TransfMediaTool { /** * 視頻轉碼flv * * @param ffmpegPath * 轉碼工具的存放路徑 * @param upFilePath * 用於指定要轉換格式的文件,要截圖的視頻源文件 * @param codcFilePath * 格式轉換後的的文件保存路徑 * @return * @throws Exception */ public void processFLV(String ffmpegPath, String upFilePath, String codcFilePath) { // 創建一個List集合來保存轉換視頻文件為flv格式的命令 List<String> convert = new ArrayList<String>(); convert.Add(ffmpegpath); //添加轉換工具路徑convert.add(“ - i”); // 添加參數" -I",該參數指定要轉換的文件convert.Add(UpFilePath); //添加要轉換格式的視頻文件的路徑convert.add(“ - ab”); convert.add(“ 56”); convert.add(“ -ar”); convert.Add(“ 22050”); convert.add(“ - q:a”); convert.add(“ 8”); convert.Add(“ - r”); convert.add(“ 15”); convert.add(“ - s”); convert.Add(“ 600*500”); / * * convert.add(“ - qscale”); //指定轉換的質量convert.add(“ 6”); * convert.add(“ - ab”); //設置音頻碼率convert.add(“ 64”); convert.Add(“ - ac”); * //設置聲道數convert.add(“ 2”); convert.add(“ -ar”); //設置聲音的採樣頻率 * convert.add(“ 22050”); convert.Add(“ - r”); //設置幀頻convert.add(“ 24”); * convert.add(“ - y”); // 添加參數" -y",該參數指定將覆蓋已存在的文件 */ convert.Add(codcfilepath);嘗試{process videoprocess = new ProcessBuilder(convert).redirectRorstream(true).start(); new printstream(videoprocess.getInputstream())。start(); VideoProcess.Waitfor(); } catch(ioexception e1){e1.printstacktrace(); } catch(InterruptedException e){e.printstacktrace(); }} / ** *對ffmpeg無法解析的文件格式(WMV9,RM,RMVB等),先用Mencoder轉換為avi(ffmpeg能解析的)格式 * * @param mencoderpath * @param mencoderpath *轉碼工具的存放路徑mencoderpath,字符串upfilepath,字符串codcavipath){// boolean flag = false;列表<string> cormend = new ArrayList <string>(); cormend.Add(mencoderpath); cormend.add(UpFilePath); cormend.add(“ - oac”); cormend.add(“ mp3lame”); cormend.add(“ - lameopts”); cormend.Add(“ Preset = 64”); cormend.add(“ -lavcopts”); cormend.add(“ acodec = mp3:abitrate = 64”); cormend.add(“ - OVC”); cormend.add(“ xvid”); cormend.add(“ - xvidencopts”); cormend.add(“ bitrate = 600”); cormend.add(“ - of”); cormend.add(“ avi”); commend.add(“ - o”); cormend.add(codcavipath);嘗試{//預處理進程processBuilder Builder = new ProcessBuilder(); Builder.Command(稱讚); Builder.RedirectRorstream(true); //進程信息輸出到控制台過程p = builder.start(); BufferedReader br = new BufferedReader(new InputStreamReader(P.GetInputStream()));字符串線= null; while(((line = br.readline())!= null){system.out.println(line); } p.waitfor(); //直到上面的命令執行完,才向下執行返回codcavipath; } catch(異常E){e.printstacktrace();返回null; }}} class printstream擴展了線程{java.io.inputstream __is = null; public printstream(java.io.inputstream is){__is = is; } public void run(){try {while(this!= null){int _ch = __is.read(); if(_ch!= -1)system.out.print((char)_ch);否則休息; }} catch(異常e){e.printstacktrace(); }}}}實體類
導入java.sql.timestamp; public class fileentity {private string type;私人字符串大小;私人字符串路徑;私有字符串標題;私人字符串titlealter;私人時間戳上傳時間; public String getType(){返回類型; } public void setType(字符串類型){this.type = type; } public String getsize(){返回大小; } public void setSize(字符串大小){this.size = size; } public String getPath(){返迴路徑; } public void setPath(string path){this.path =路徑; } public String getTitleorig(){return titleorig; } public void settitleorig(string titleorig){this.titleorig = titleorig; } public String getTitlealter(){返回titlealter; } public void settitlealter(string titlealter){this.titlealter = titlealter; } public Timestamp getUploadTime(){返回上傳時間; } public void setUploadtime(timestamp uploadtime){this.uploadtime = uploadTime; }}}總結
以上所述是小編給大家介紹的java上傳視頻實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持! ,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!