亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java上傳視頻實例代碼

2024-07-13 10:16:16
字體:
來源:轉載
供稿:網友

頁面:

上傳文件時的關鍵詞: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"><html><head>  <base href="<%=basePath%>" rel="external nofollow" >  <title>上傳視頻</title>  <meta http-equiv="pragma" content="no-cache">  <meta http-equiv="cache-control" content="no-cache">  <meta http-equiv="expires" content="0">  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  <meta http-equiv="description" content="This is my page"></head><body>  <div class="panel panel-default">    <div class="panel-body">      <div class="panel-heading" align="center"><h1 class="sub-header h3">文件上傳</h1></div>        <hr>      <form class="form-horizontal" id="upload" method="post" action="uploadflv/upload.do" enctype="multipart/form-data">        <div class="form-group" align="center">          <div class="col-md-4 col-sm-4 col-xs-4 col-lg-4">文件上傳            <input type="file" class="form-control" name="file" id="file"><br>            <input type="submit" value="上傳">          </div>        </div>      </form>    </div>  </div></body></html>

后臺:

controller

import javax.servlet.http.HttpServletRequest;import model.FileEntity;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;import 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@RequestMapping("/uploadflv")public class UploadController {  @RequestMapping(value = "/upload", method={RequestMethod.POST,RequestMethod.GET})  @ResponseBody  public ModelAndView upload(@RequestParam(value = "file", required = false) MultipartFile multipartFile,      HttpServletRequest request, ModelMap map) {    String message = "";    FileEntity entity = new FileEntity();    FileUploadTool fileUploadTool = new FileUploadTool();    try {      entity = fileUploadTool.createFile(multipartFile, request);      if (entity != null) {//        service.saveFile(entity);        message = "上傳成功";        map.put("entity", entity);        map.put("result", message);      } else {        message = "上傳失敗";        map.put("result", message);      }    } catch (Exception e) {      e.printStackTrace();    }    return new ModelAndView("result", map);  }}

工具類

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  private static long upload_maxsize = 800 * 1024 * 1024;  // 文件允許格式  private static String[] allowFiles = { ".rar", ".doc", ".docx", ".zip",      ".pdf", ".txt", ".swf", ".xlsx", ".gif", ".png", ".jpg", ".jpeg",      ".bmp", ".xls", ".mp4", ".flv", ".ppt", ".avi", ".mpg", ".wmv",      ".3gp", ".mov", ".asf", ".asx", ".vob", ".wmv9", ".rm", ".rmvb" };  // 允許轉碼的視頻格式(ffmpeg)  private static String[] allowFLV = { ".avi", ".mpg", ".wmv", ".3gp",      ".mov", ".asf", ".asx", ".vob" };  // 允許的視頻轉碼格式(mencoder)  private static String[] allowAVI = { ".wmv9", ".rm", ".rmvb" };  public FileEntity createFile(MultipartFile multipartFile, HttpServletRequest request) {    FileEntity entity = new FileEntity();    boolean bflag = false;    String fileName = multipartFile.getOriginalFilename().toString();    // 判斷文件不為空    if (multipartFile.getSize() != 0 && !multipartFile.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) {      String logoPathDir = "/video/";      String logoRealPathDir = request.getSession().getServletContext().getRealPath(logoPathDir);      // 上傳到本地磁盤      // String logoRealPathDir = "E:/upload";      File logoSaveFile = new File(logoRealPathDir);      if (!logoSaveFile.exists()) {        logoSaveFile.mkdirs();      }      String name = fileName.substring(0, fileName.lastIndexOf("."));      System.out.println("文件名稱:" + name);      // 新的文件名      String newFileName = this.getName(fileName);      // 文件擴展名      String fileEnd = this.getFileExt(fileName);      // 絕對路徑      String fileNamedirs = logoRealPathDir + File.separator + newFileName + fileEnd;      System.out.println("保存的絕對路徑:" + fileNamedirs);      File filedirs = new File(fileNamedirs);      // 轉入文件      try {        multipartFile.transferTo(filedirs);      } catch (IllegalStateException e) {        e.printStackTrace();      } catch (IOException e) {        e.printStackTrace();      }      // 相對路徑      entity.setType(fileEnd);      String 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.getFileExt(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 (Exception e) {            e.printStackTrace();          }        }        entity.setSize(size);        entity.setPath(finalFileDir);        entity.setTitleOrig(name);        entity.setTitleAlter(newFileName);        Timestamp timestamp = new Timestamp(System.currentTimeMillis());        entity.setUploadTime(timestamp);        return entity;      } else {        return null;      }    } else {      return null;    }  }  /**   * 文件類型判斷   *   * @param fileName   * @return   */  private boolean checkFileType(String fileName) {    Iterator<String> type = Arrays.asList(allowFiles).iterator();    while (type.hasNext()) {      String ext = type.next();      if (fileName.toLowerCase().endsWith(ext)) {        return true;      }    }    return false;  }  /**   * 視頻類型判斷(flv)   *   * @param fileName   * @return   */  private boolean checkMediaType(String fileEnd) {    Iterator<String> type = Arrays.asList(allowFLV).iterator();    while (type.hasNext()) {      String ext = type.next();      if (fileEnd.equals(ext)) {        return true;      }    }    return false;  }  /**   * 視頻類型判斷(AVI)   *   * @param fileName   * @return   */  private boolean checkAVIType(String fileEnd) {    Iterator<String> type = Arrays.asList(allowAVI).iterator();    while (type.hasNext()) {      String ext = type.next();      if (fileEnd.equals(ext)) {        return true;      }    }    return false;  }  /**   * 獲取文件擴展名   *   * @return string   */  private String getFileExt(String fileName) {    return fileName.substring(fileName.lastIndexOf("."));  }  /**   * 依據原始文件名生成新文件名   * @return   */  private String getName(String fileName) {    Iterator<String> type = Arrays.asList(allowFiles).iterator();    while (type.hasNext()) {      String ext = type.next();      if (fileName.contains(ext)) {        String newFileName = fileName.substring(0, fileName.lastIndexOf(ext));        return newFileName;      }    }    return "";  }  /**   * 文件大小,返回kb.mb   *   * @return   */  private String getSize(File file) {    String size = "";    long fileLength = file.length();    DecimalFormat df = new DecimalFormat("#.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";    }    return size;  }}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);    try {      Process videoProcess = new ProcessBuilder(convert).redirectErrorStream(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 upFilePath   *      用于指定要轉換格式的文件,要截圖的視頻源文件   * @param codcFilePath   *      格式轉換后的的文件保存路徑   * @return   * @throws Exception   */  public String processAVI(String mencoderPath, String upFilePath, String codcAviPath) {//    boolean flag = false;    List<String> commend = new ArrayList<String>();    commend.add(mencoderPath);    commend.add(upFilePath);    commend.add("-oac");    commend.add("mp3lame");    commend.add("-lameopts");    commend.add("preset=64");    commend.add("-lavcopts");    commend.add("acodec=mp3:abitrate=64");    commend.add("-ovc");    commend.add("xvid");    commend.add("-xvidencopts");    commend.add("bitrate=600");    commend.add("-of");    commend.add("avi");    commend.add("-o");    commend.add(codcAviPath);    try {      // 預處理進程      ProcessBuilder builder = new ProcessBuilder();      builder.command(commend);      builder.redirectErrorStream(true);      // 進程信息輸出到控制臺      Process p = builder.start();      BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));      String line = null;      while ((line = br.readLine()) != null) {        System.out.println(line);      }      p.waitFor();// 直到上面的命令執行完,才向下執行      return codcAviPath;    } catch (Exception e) {      e.printStackTrace();      return null;    }  }}class PrintStream extends Thread {  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);        else          break;      }    } catch (Exception e) {      e.printStackTrace();    }  }}

實體類

import java.sql.Timestamp;public class FileEntity {  private String type;  private String size;  private String path;  private String titleOrig;  private String titleAlter;  private Timestamp uploadTime;  public String getType() {    return type;  }  public void setType(String type) {    this.type = type;  }  public String getSize() {    return size;  }  public void setSize(String size) {    this.size = size;  }  public String getPath() {    return path;  }  public void setPath(String path) {    this.path = path;  }  public String getTitleOrig() {    return titleOrig;  }  public void setTitleOrig(String titleOrig) {    this.titleOrig = titleOrig;  }  public String getTitleAlter() {    return titleAlter;  }  public void setTitleAlter(String titleAlter) {    this.titleAlter = titleAlter;  }  public Timestamp getUploadTime() {    return uploadTime;  }  public void setUploadTime(Timestamp uploadTime) {    this.uploadTime = uploadTime;  }}

總結

以上所述是小編給大家介紹的Java上傳視頻實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区三区日韩在线| 91国产一区在线| 欧美午夜片欧美片在线观看| 亚洲日本aⅴ片在线观看香蕉| 欧美一级淫片videoshd| 欧美一区视频在线| 色悠悠久久久久| 欧美日韩免费一区| 色悠久久久久综合先锋影音下载| 久久综合国产精品台湾中文娱乐网| 在线精品视频视频中文字幕| 欧洲精品久久久| 日本不卡免费高清视频| 欧美一区二粉嫩精品国产一线天| 亚洲一区二区久久久久久久| 97精品国产97久久久久久春色| 国产成人精品av在线| 国产免费亚洲高清| 欧美久久精品一级黑人c片| 91免费看片在线| 国模私拍一区二区三区| 日韩欧美国产黄色| 欧美午夜性色大片在线观看| 欧美成人免费播放| 亚洲国产成人在线视频| 欧美二区乱c黑人| 欧美最顶级的aⅴ艳星| 欧美黑人性生活视频| 亚洲天堂男人天堂| 色综合伊人色综合网站| 亚洲一区美女视频在线观看免费| 97热在线精品视频在线观看| 奇米成人av国产一区二区三区| 亚洲欧美一区二区三区四区| 97婷婷涩涩精品一区| 欧美国产日韩中文字幕在线| 国产成人精品日本亚洲专区61| 亚洲精品中文字幕有码专区| 欧美丰满少妇xxxxx做受| 九色成人免费视频| 国模叶桐国产精品一区| 国产日韩欧美在线播放| 国产精品一久久香蕉国产线看观看| 亚洲成人网在线观看| 91免费视频网站| 日韩在线精品一区| 亚洲一区二区三区在线视频| 美女视频黄免费的亚洲男人天堂| 国产精品一久久香蕉国产线看观看| 久久99久久99精品免观看粉嫩| 亚洲欧洲在线视频| 国产一区二区视频在线观看| 国产精品影院在线观看| 精品二区三区线观看| 国产精品国产福利国产秒拍| 韩国欧美亚洲国产| 国产精品欧美一区二区| 成人免费视频97| 久久久精品一区二区三区| 欧美老女人xx| 日本精品视频在线| 懂色av一区二区三区| 欧美福利视频网站| 国模极品一区二区三区| 亚洲国产婷婷香蕉久久久久久| 欧美视频在线观看免费| 国产精品久久久久影院日本| 国产精品免费久久久久影院| 久久精品国产免费观看| 欧美最猛性xxxxx亚洲精品| 国产一区二区三区中文| 日韩欧美在线免费观看| 国产91精品久久久久久久| 啊v视频在线一区二区三区| 久久影视电视剧凤归四时歌| 久久999免费视频| 国内精品久久久久影院优| 亚洲影院色在线观看免费| 亚洲第一偷拍网| 欧美精品久久久久久久久久| 中文字幕在线精品| 欧美成人精品激情在线观看| 欧美裸体视频网站| 亚洲激情视频网| 欧美日韩国产成人高清视频| 国产午夜精品全部视频在线播放| 欧美精品xxx| 欧美激情免费观看| 欧美日韩国产精品一区二区不卡中文| 国产精国产精品| 成人黄色午夜影院| 亚洲最大中文字幕| 综合激情国产一区| 午夜精品久久久久久久99黑人| 国产91精品不卡视频| 97人人模人人爽人人喊中文字| 亚洲精品自拍第一页| 555www成人网| 欧美激情久久久久久| 青青a在线精品免费观看| 国产不卡一区二区在线播放| 欧美一级淫片videoshd| 亚洲成人黄色在线观看| 欧美精品在线免费播放| 欧美大片欧美激情性色a∨久久| 色婷婷久久一区二区| 欧美另类老肥妇| 78m国产成人精品视频| 国产日韩中文字幕在线| 亚洲第一区中文字幕| 国产一区二区三区中文| 欧美丝袜一区二区三区| www高清在线视频日韩欧美| 92看片淫黄大片欧美看国产片| 国产网站欧美日韩免费精品在线观看| 亚洲天堂免费在线| 国产精品免费电影| 欧美日韩国产成人高清视频| 亚洲国产精品热久久| 成人久久一区二区| 久久国内精品一国内精品| 国产日韩在线一区| 国产精品视频午夜| 精品高清美女精品国产区| 国产精品高潮呻吟久久av野狼| 日韩精品久久久久| 亚洲黄色www网站| 亚洲精品小视频在线观看| 久久久国产成人精品| 久久久精品在线| 久久精品亚洲94久久精品| 欧美精品在线看| 日本久久久久久久久久久| 亚洲精品狠狠操| 在线看日韩欧美| 国产精品一区二区性色av| 国产精品高潮呻吟久久av黑人| 精品日韩美女的视频高清| 亚洲第一综合天堂另类专| 国产视频精品一区二区三区| 欧美日韩不卡合集视频| 亚洲国内精品在线| 国产成人一区二区三区小说| 日韩中文字幕精品| 欧美激情成人在线视频| 精品久久久视频| 68精品久久久久久欧美| 亚洲最新av网址| 国产精品尤物福利片在线观看| 亚洲精品视频免费在线观看| 亚洲精品久久久久国产| 国产精品成人aaaaa网站| 亚洲第一视频网| 91爱爱小视频k| 美女性感视频久久久| 中文字幕日韩欧美在线| 国产精品白丝av嫩草影院| 日韩美女免费视频| 国产精品黄色影片导航在线观看| 日韩欧美极品在线观看| 亚洲影视中文字幕| 国内免费精品永久在线视频| 久久九九免费视频| 奇米成人av国产一区二区三区|