web项目中视频的上传和展示
思路:
上传:<form>表单提交视频-->后台使用字节流保存到本地。
展示:<video>标签展示: src属性发送请求 --> 使用字节流将视频绑定到响应并返回。
这条思路适用于所有文件(包括图片,音频,视频,压缩包),下面只是视频的实例。
一上传
1.form表单提交视频
<form method="post" action="/manager/card/addMovie" enctype="multipart/form-data">
    <input  name="movie" type="file" MULTIPLE>
    <input type="submit">
</form>
注意<input>使用 type="file" MULTIPLE 属性
    <form>使用 enctype="multipart/form-data"
2.controller接收
@RequestMapping("/addMovie")
public  String addMovie(MultipartFile movie){
   ..................;
}3.使用字节流保存到本地
/**
 *
 * @param file
 * @param path  保存的路径
 * @param fileName  保存的文件名
 */
  public static void saveFile(MultipartFile file, String path, String fileName) {
    InputStream inputStream = null;
    OutputStream outputStream = null;
    try {
        inputStream = file.getInputStream();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        byte[] bs = new byte[1024];        // 读取到的数据长度
        int len;                           // 输出的文件流保存到本地文件
        File tempFile = new File(path);    // 保存到临时文件 1K的数据缓冲
        if (!tempFile.exists()) {
            tempFile.mkdirs();
        }
        outputStream = new FileOutputStream(tempFile.getPath() + File.separator + fileName);
        while ((len = inputStream.read(bs)) != -1) {    // 开始读取
            outputStream.write(bs, 0, len);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {                 // 完毕,关闭所有链接
        try {
            outputStream.close();
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}以上步骤视频就通过程序保存到电脑的指定位置了,一般我会新建一个视频类,先用uuid给视频重命名,视频类的路径是视频的名字,取的时候使用视频的名字去请求。
二 展示
1.video请求
    <video src="${file}/mp4+${mp4.paths}/${mp4.suffix}" controls="controls"
           preload="auto">
    </video>
注意:video要加controls="controls"才会有播放按钮显示,其他属性不一一介绍2.使用字节流将视频绑定到响应并返回
@Controller
@RequestMapping("/file")
public class FileController {
/**
 *
 * @param response
 * @param filePath 文件路径+名称
 * @param suffix 文件的后缀
 * @return
 */
@RequestMapping("/{filePath}/{suffix}")
public String getFile(HttpServletResponse response, @PathVariable String filePath, @PathVariable String suffix) {
    FileInputStream fis = null;
    ServletOutputStream outputStream = null;
    int len = 0;
    try {
        File file = new File(FileUtils.getFileMainPath() + filePath + "." + suffix);
        fis = new FileInputStream(file);
        byte[] b = new byte[1024 * 2];
        outputStream = response.getOutputStream();
        while ((len = fis.read(b)) != -1) {
            outputStream.write(b, 0, len);
        }
        outputStream.flush();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (fis != null)
                fis.close();
            if (outputStream != null)
                outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            fis = null;
            outputStream = null;
        }
    }
    return null;
}
}    
等响应返回成功后video标签就显示了视频,
效果如下(我做的手机端的,所以比较小)
web项目中视频的上传和展示的更多相关文章
- 关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)
		一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ... 
- 【转】关于web项目中的图片上传、并在前端显示问题(tomcat中配置文件上传虚拟路径)
		一.数据库存储 直接把图片的二进制码存到数据库,可参考blog:http://blog.csdn.net/hope2jiang/article/details/590733 直接存图片在mysql上面 ... 
- 详细阐述Web开发中的图片上传问题
		Web开发中,图片上传是一种极其常见的功能.但是呢,每次做上传,都花费了不少时间. 一个"小功能"花费我这么多时间,真心不愉快. So,要得认真分析下原因. 1.在最初学习Java ... 
- ssm项目中常用的上传文件
		在项目中,上传文件一般是必不可少的,所以今天学到新的上传方式,就干脆将学习过的上传方式记录一下 一.表单直接上传图片 表单头要设置 <form action="" metho ... 
- webuploader项目中多图片上传实例
		<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ... 
- webuploader项目中多文件上传实例
		<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ... 
- 分享一个FileUtil工具类,基本满足web开发中的文件上传,单个文件下载,多个文件下载的需求
		获取该FileUtil工具类具体演示,公众号内回复fileutil20200501即可. package com.example.demo.util; import javax.servlet.htt ... 
- javaweb项目中的文件上传下载功能的实现
		框架是基于spring+myBatis的. 前台页面的部分代码: <form action="${ctx}/file/upLoadFile.do"method="p ... 
- JavaWeb项目中使用ajax上传文件
		1.jsp $("#cxsc").click(function(){ var bankId = $("#bankId").val(); var formdata ... 
随机推荐
- LeetCode-026-删除有序数组中的重复项
			删除有序数组中的重复项 题目描述:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改输入数组 ... 
- 修饰符-final
			Java是由C/C++泛生的,其也保留了C/C++的部分特性,如关键字.在C/C++中,关键字有着特殊的含义. final修饰符 在编程中,一般会存在一些变量或方法,程序员不让其数据"发生改 ... 
- 面试官:Redis中哈希数据类型的内部实现方式是什么?
			面试官:Redis中基本的数据类型有哪些? 我:Redis的基本数据类型有:字符串(string).哈希(hash).列表(list).集合(set).有序集合(zset). 面试官:哈希数据类型的内 ... 
- ELK日志收集(SpringBoot)
			目录 环境&准备 ES安装 Kibana安装 Logstash安装 Logstash配置 SpringBoot中logback-spring.xml配置 测试 启动 ES\Kibana\Log ... 
- TP5实现多文件上传及展示
			view层上传: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ... 
- a 标签 href 失效  和ajax的类型
			Jquery Ajax type的4种类型 Ajax type这个里面填什么呢?通常大家都会说get和post.那么还有2个是什么呢 $.ajax({ url: 'http://www.cnblo ... 
- 8、msyql性能分析工具
			性能分析工具 1服务器优化的步骤 2查询系统参数 在MySQL中,可以使用 SHOW STATUS 语句查询一些MySQL数据库服务器的性能参数.执行频率 . SHOW STATUS语句语法如下: S ... 
- [apue] linux 文件系统那些事儿
			前言 说到 linux 的文件系统,好多人第一印象是 ext2/ext3/ext4 等具体的文件系统,本文不涉及这些,因为研究具体的文件系统难免会陷入细节,甚至拉大段的源码做分析,反而不能从宏观的角度 ... 
- 实现一个cache
			实现一个LRU cache,定义get函数和set函数,cache是固定长度的,当cache已经满,那么就删除一直没有被更新的记录,然后将新的记录放进去. LRU: 全称是Least Recently ... 
- Apache+PHP+Mysql安装手册(Linux)
			一. 检查系统环境 1.确认centos版本 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Co ... 
