: :
: : enctype = "multipart/form-data"
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <٪ string path = request.getContextPath () ؛ String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+path+"/" ؛ ٪> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> rel = "nofollow"> <title> 上传视频 </title> <meta http-equiv = "pragma" content = "no-cache"> <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "exparies" content = "0" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = "this is my page"> </head> <body> <viv> <div> <div align = "center"> <h1> 文件上传 </h1/h1> </viv> <hr> enctype = "multipart/form-data"> <div align = "center"> <viv> 文件上传 <type type = "file" name = "file" id = "file"> <br> <input type = "submit" value = "上传"> </viv>
: :
وحدة تحكم
استيراد javax.servlet.http.httpservletrequest ؛ استيراد نموذج. org.springframework.web.bind.annotation.requestmethod ؛ استيراد org.springframework.web.bind.annotation.requestparam ؛ org.springframework.web.bind.annotation.responsebody ؛ org.springframework.web.servlet.modelandview ؛@controller@requestMapping ("/uploadflv") الفئة العامة uploadController {@requestmapping (value = "/upload" ، method = {requestMethod.post ، requestMethod.get}) responsebody modeland ( multipartfile multipartfile ، httpservletrequest request ، modelMap Map) {String message = "" ؛ FileEntity unitity = new FileEntity () ؛ fileUploadTool fileUploAdTool = جديد fileUploadTool () ؛ حاول {entity = fileuploadtool.createfile (multipartfile ، request) ؛ if (untity! = null) {// service.savefile (intity) ؛ رسالة = "上传成功" ؛ map.put ("الكيان" ، الكيان) ؛ map.put ("النتيجة" ، رسالة) ؛ } آخر {message = "上传失败" ؛ map.put ("النتيجة" ، رسالة) ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ } إرجاع نموذج جديد ("النتائج" ، الخريطة) ؛ }}工具类
استيراد java.io.file ؛ import java.io.ioException ؛ استيراد java.sql.timestamp ؛ استيراد java.text.decimalformat ؛ استيراد java.util.arrays ؛ استيراد java.util.iterator ؛ استيراد javax.servlet.http.httpserveld org.springframework.web.multipart.multipartfile ؛ الفئة العامة fileuploadtool {transfmediatool transfmediatool = new transfmediatool () ؛ // 文件最大 500m static static upload_maxsize = 800 * 1024 * 1024 ؛ // 文件允许格式 سلسلة ثابتة خاصة [] ALTERFILES = {".rar" ، ".doc" ، ".docx" ، ".zip" ، ".pdf" ، ".txt" ، ".swf" ، ".xlsx" ،. ".flv" ، ".ppt" ، ".avi" ، ".mpg" ، ".wmv" ، ".3gp" ، ".mov" ، ". // 允许转码的视频格式 (ffmpeg) سلسلة ثابتة خاصة [] leftflv = {".avi" ، ".mpg" ، ".wmv" ، ".3gp" ، ".mov" ، .asf "،" .asx "،" .vob "} ؛ // 允许的视频转码格式 (mencoder) سلسلة ثابتة خاصة [] allowavi = {".wmv9" ، ".rm" ، ".rmvb"} ؛ fileentity public createfile (multipartfile multipartfile ، httpservletrequest request) {fileentity intity = new FileEntity () ؛ منطقية bflag = false ؛ اسم ملف السلسلة = multipartfile.getoriginalfilename (). toString () ؛ // 判断文件不为空 if (multipartfile.getSize ()! = 0 &&! multipartfile.isempty ()) {bflag = true ؛ // 判断文件大小 if (multipartfile.getSize () <= upload_maxsize) {bflag = true ؛ // 文件类型判断 if (this.checkfiletype (filename)) {bflag = true ؛ } آخر {bflag = false ؛ System.out.println ("文件类型不允许") ؛ }} آخر {bflag = false ؛ System.out.println ("文件大小超范围") ؛ }} آخر {bflag = false ؛ System.out.println ("文件为空") ؛ } if (bflag) {string logopathdir = "/video/" ؛ سلسلة logorealpathdir = request.getSession (). getServletContext (). getRealPath (logopathdir) ؛ // 上传到本地磁盘 // string logorealpathdir = "e:/upload" ؛ ملف logosavefile = ملف جديد (logorealpathdir) ؛ if (! logosavefile.exists ()) {logosavefile.mkdirs () ؛ } اسم السلسلة = filename.substring (0 ، filename.lastindexof (".")) ؛ System.out.println ("文件名称 :" + name) ؛ // 新的文件名 string newFilename = this.getName (filename) ؛ // 文件扩展名 string fileend = this.getFileStex (filename) ؛ // 绝对路径 string fileNamedIrs = logorealPathdir + file.separator + newFilename + fileend ؛ System.out.println ("保存的绝对路径 :" + fileNamedIrs) ؛ ملف filedirs = ملف جديد (fileNamedIRS) ؛ // 转入文件 حاول {multipartfile.transferto (fileDirs) ؛ } catch (alfortalStateException e) {e.printStackTrace () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } // 相对路径 entity.settype (fileend) ؛ سلسلة fileDir = logopathdir + newFilename + fileend ؛ StringBuilder Builder = new StringBuilder (FileDir) ؛ String FinalFileDir = builder.substring (1) ؛ // size 存储为 string string size = this.getSize (filedirs) ؛ // 源文件保存路径 string avipath = filedirs.getabsolutepath () ؛ // 转码 avi // boolean flag = false ؛ if (this.checkavitype (fileend)) {// 设置转换为 avi 格式后文件的保存路径 string codcavipath = logorealpathdir + file.separator + newFilename + ".avi" ؛ // 获取配置的转换工具 (mencoder.exe) 的存放路径 string mencoderPath = request.getSession (). getServletContext (). getRealPath ("/tools/mencoder.exe") ؛ avipath = transfmediatool.processavi (mencoderPath ، fileDirs.getabsolutepath () ، codcavipath) ؛ fileend = this.getFileStext (codcavipath) ؛ } if (avipath! = null) {// 转码 flv if (this.checkMediAtype (fileend)) {try {// 设置转换为 flv 格式后文件的保存路径 string codcfilepath = logorealpathdir + file.separator + newFilename + ".flv" ؛ // 获取配置的转换工具 (ffmpeg.exe) 的存放路径 string ffmpegpath = request.getSession (). getServletContext (). getRealPath ("/tools/ffmpeg.exe") ؛ transfmediatool.processflv (FFMPegPath ، Avipath ، codcfilepath) ؛ fileDir = logopathdir + newFilename + ".flv" ؛ Builder = New StringBuilder (FileDir) ؛ FinalFileDir = builder.substring (1) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }} intity.setsize (size) ؛ entity.setPath (Finalfiledir) ؛ entity.SetTitleorig (name) ؛ entity.Settitlealter (newFilename) ؛ Timestamp Timestamp = Timestamp جديد (System.CurrentTimeMillis ()) ؛ entity.setUploadTime (timestamp) ؛ كيان العودة ؛ } آخر {return null ؛ }} آخر {return null ؛ }} / ** * 文件类型判断 * * param filename * @return * / private boolean checkFileType (string fileName) {iterator <string> type = arrays.aslist (almotfiles) .iterator () ؛ بينما (type.hasnext ()) {String ext = type.next () ؛ if (filename.toLowerCase (). endswith (ext)) {return true ؛ }} إرجاع خطأ ؛ } / ** * 视频类型判断 (flv) * * param filename * @return * / private boolean checkMediAtype (string fileend) {iterator <string> type = arrays.aslist (allowflv) .iterator () ؛ بينما (type.hasnext ()) {String ext = type.next () ؛ if (fileend.equals (ext)) {return true ؛ }} إرجاع خطأ ؛ } / *: بينما (type.hasnext ()) {String ext = type.next () ؛ if (fileend.equals (ext)) {return true ؛ }} إرجاع خطأ ؛ } / ** * 获取文件扩展名 * * regurn string * / private string getFileSteSt (اسم ملف السلسلة) {return filename.substring (filename.lastindexof (".")) ؛ } / ** * 依据原始文件名生成新文件名 * regurn * / private string getName (اسم ملف السلسلة) {iterator <string> type = arrays.aslist (almotfiles) .iterator () ؛ بينما (type.hasnext ()) {String ext = type.next () ؛ if (filename.contains (ext)) {String newFilename = filename.substring (0 ، filename.lastindexof (ext)) ؛ إرجاع newFilename ؛ } } يعود ""؛ } / ** * 文件大小 , 返回 kb.mb * * @RETURN * / private string getTize (ملف) {string size = "" ؛ long fileLength = file.length () ؛ decimalformat df = new decimalformat ("#. 00") ؛ if (fileLength <1024) {size = df.format ((double) fileLength) + "bt" ؛ } آخر إذا (filelength <1048576) {size = df.format ((double) fileLength / 1024) + "kb" ؛ } آخر إذا (Filelength <1073741824) {size = df.format ((double) fileLength / 1048576) + "MB" ؛ } آخر {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 ffmpath codcfilepath * 格式转换后的的文件保存路径 * regurn * @throws استثناء */ 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 ("-س: أ") ؛ 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) .RedIrecTerRorStream (true) .start () ؛ New PrintStream (VideoProcess.getInputStream ()). start () ؛ fideoprocess.waitfor () ؛ } catch (ioException e1) {e1.printStackTrace () ؛ } catch (interruptedException e) {E.PrintStackTrace () ؛ } ستر mencoderPath ، سلسلة upfilepath ، سلسلة codcavipath) {// boolean flag = false ؛ قائمة <Tring> Confend = new ArrayList <String> () ؛ Confend.add (MencoderPath) ؛ Confend.add (upfilepath) ؛ Confend.add ("-OAC") ؛ Confend.add ("mp3lame") ؛ Confend.add ("-lameopts") ؛ Confend.add ("preset = 64") ؛ Confend.add ("-lavcopts") ؛ Confend.Add ("ACODEC = mp3: abitrate = 64") ؛ Confend.add ("-OVC") ؛ Confend.add ("Xvid") ؛ Confend.Add ("-Xvidencopts") ؛ Confend.add ("bitrate = 600") ؛ Confend.add ("-of") ؛ Confend.add ("Avi") ؛ Confend.add ("-O") ؛ Confend.add (Codcavipath) ؛ حاول {// 预处理进程 processbuilder builder = new ProcessBuilder () ؛ Builder.Command (الثناء) ؛ builder.redirecterRorsstream (صواب) ؛ // 进程信息输出到控制台 process p = builder.start () ؛ BufferedReader BR = جديد BufferedReader (New InputStreamReader (P.GetInputStream ())) ؛ خط السلسلة = فارغ ؛ بينما ((line = br.readline ())! = null) {system.out.println (line) ؛ } p.waitfor () ؛ // 直到上面的命令执行完 , 才向下执行 return codcavipath ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ العودة لاغية. }}} class printstream يمتد مؤشر الترابط {java.io.inputStream __is = null ؛ printstream public (java.io.inputStream is) {__is = is ؛ } public void run () {try {when (this! = null) {int _ch = __is.Read () ؛ if (_ch! = -1) system.out.print ((char) _ch) ؛ استراحة أخرى }} catch (استثناء e) {E.PrintStackTrace () ؛ }}}实体类
استيراد java.sql.timestamp ؛ ملفات الفئة العامة {نوع السلسلة الخاصة ؛ حجم السلسلة الخاص مسار السلسلة الخاص السلسلة الخاصة titleorig ؛ سلسلة خاصة titlealter ؛ وقت التحميل الطابع الزمني ؛ السلسلة العامة gettype () {نوع الإرجاع ؛ } public void setType (نوع السلسلة) {this.type = type ؛ } getSize getSize () {حجم الإرجاع ؛ } public void setSize (size string) {this.size = size ؛ } السلسلة العامة getPath () {return path ؛ } public void setPath (string path) {this.path = path ؛ } السلسلة العامة getTitleorig () {return titleorig ؛ } public void settitleorig (سلسلة titleorig) {this.titleorig = titleorig ؛ } السلسلة العامة getTitlealter () {return titlealter ؛ } public void settitlealter (String titlealter) {this.titlealter = titlealter ؛ } timestamp getuploadtime () {return exploadtime ؛ ) }}总结
以上所述是小编给大家介绍的 Java 上传视频实例代码 , 希望对大家有所帮助 , 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!