springmvc web网站开发上传视频到远程服务器解决方案!近期在给学校做官方网站设计时,有一个业务需求是,后台要增加一个视频管理模块,管理员在后台可以把本地硬盘剪辑好的视频文件,上传到远程服务器里,然后在网页前端页面里供访客浏览。

1,先说一下,解决思路。和之前一样,既然是上传多媒体文件,借助于之前在培训班里的学习经验,使用org.springframework.web.multipart.MultipartFile;这个插件,是可以实现该功能,就是速度这块快不快,得看您的网络带宽,和服务器的网络带宽了。当然是带宽越高速度越快了,包括服务器的cpu核心频率,和内存大小。你懂的。

2,下面就是说一下代码的实现,和一些基础的配置参数设置情况。

先贴代码,供大家借鉴。下面是我自己给公司写的上传视频到远程服务器的controller,控制器源码。

package com.web.controller;import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import com.web.bean.Proimage;
import com.web.bean.ResponseResult;
import com.web.util.CreateName;@Controller
@RequestMapping({ "/uploadvideo" })
public class UploadVideoController {/*** 上传校区视频接口,* @param request* @param peitu* @return*/@RequestMapping("/uploadXiaoquVideo")@ResponseBodypublic ResponseResult<Proimage> uploadXiaoquVideoSrc(HttpServletRequest request,@RequestParam("xiaoquvideosrcfile") MultipartFile peitu){ResponseResult<Proimage> rr = new ResponseResult<Proimage>();try {byte[] bytes = null;// www/www/ftpusergrzx/newspeitu///存储在本地硬盘里的所有的视频文件。String uploadDir = "d:\\xiaoquvideosource\\";String fileRrealName = peitu.getOriginalFilename();//使用系统时间戳产生了一个名字。+原始文件的后缀名,组合的一个新的文件名字。
//            long time = System.currentTimeMillis();
//            String t = String.valueOf(time / 1000L);//文件的名字,可以使用代码创造的名字。String newName = CreateName.getInstance().getNewName();String fileName = String.valueOf(newName) + fileRrealName.substring(fileRrealName.lastIndexOf("."));String filePath = String.valueOf(uploadDir) + fileName;// 给后端发布人员看见的显示图片的路径地址。这是一个相对地址。不是物理路径。String xianshisrc = "/xiaoquvideosrcurl/" + fileName;BufferedOutputStream bos = null;FileOutputStream fos = null;try {bytes = peitu.getBytes();File temp = new File(filePath);if (!temp.exists())temp.createNewFile();fos = new FileOutputStream(temp);bos = new BufferedOutputStream(fos);bos.write(bytes);rr.setState(Integer.valueOf(1));rr.setMessage("校区视频上传成功");Proimage pi = new Proimage();pi.setImgurl(xianshisrc);rr.setData(pi);return rr;} catch (Exception e) {e.printStackTrace();rr.setState(Integer.valueOf(0));rr.setMessage("请重试");return rr;} finally {if (bos != null)try {bos.close();} catch (IOException e) {e.printStackTrace();} finally {if (fos != null)try {fos.close();} catch (IOException e) {e.printStackTrace();}}}} catch (Exception e) {rr.setState(Integer.valueOf(0));rr.setMessage("服务器异常请重试");return rr;}}/*** 上传成绩配图接口* @param request* @param peitu* @return*/@RequestMapping("/uploadVideoSrc")@ResponseBodypublic ResponseResult<Proimage> uploadVideoSrc(HttpServletRequest request,@RequestParam("videosrcfile") MultipartFile peitu) {ResponseResult<Proimage> rr = new ResponseResult<Proimage>();try {byte[] bytes = null;// www/www/ftpusergrzx/newspeitu///存储在本地硬盘里的所有的视频文件。String uploadDir = "d:\\videosource\\";String fileRrealName = peitu.getOriginalFilename();//使用系统时间戳产生了一个名字。+原始文件的后缀名,组合的一个新的文件名字。
//            long time = System.currentTimeMillis();
//            String t = String.valueOf(time / 1000L);//文件的名字,可以使用代码创造的名字。String newName = CreateName.getInstance().getNewName();String fileName = String.valueOf(newName) + fileRrealName.substring(fileRrealName.lastIndexOf("."));String filePath = String.valueOf(uploadDir) + fileName;// 给后端发布人员看见的显示图片的路径地址。这是一个相对地址。不是物理路径。String xianshisrc = "/videosrcurl/" + fileName;BufferedOutputStream bos = null;FileOutputStream fos = null;try {bytes = peitu.getBytes();File temp = new File(filePath);if (!temp.exists())temp.createNewFile();fos = new FileOutputStream(temp);bos = new BufferedOutputStream(fos);bos.write(bytes);rr.setState(Integer.valueOf(1));rr.setMessage("视频上传成功");Proimage pi = new Proimage();pi.setImgurl(xianshisrc);rr.setData(pi);return rr;} catch (Exception e) {e.printStackTrace();rr.setState(Integer.valueOf(0));rr.setMessage("请重试");return rr;} finally {if (bos != null)try {bos.close();} catch (IOException e) {e.printStackTrace();} finally {if (fos != null)try {fos.close();} catch (IOException e) {e.printStackTrace();}}}} catch (Exception e) {rr.setState(Integer.valueOf(0));rr.setMessage("服务器异常请重试");return rr;}}
}

如图,在代码里面,上传后,需要给文件起一个名字,我使用的是:使用系统时间戳产生了一个名字。+原始文件的后缀名,组合的一个新的文件名字。你也可以使用其他的起名方案。

如图,这是上传到服务器后的视频文件名字,格式我使用的都是mp4格式的。

下面发一下,配置的参数情况。

修改spring-mvc.xml配置文件里的参数,最大上传文件的容积,改成你预估的大小即可。我写的是允许上传2G左右的大小的文件。

补充:这个配置参数,会影响整个上传接口!只要你是调用了multipartReslver插件,都会被他影响到的。不仅仅是视频哦,图片,等都是它来管控着的。

末尾说一下,亲测的上传和播放效果。

首先说一下,服务器的配置参数:2核心,4G内存,40G硬盘。带宽峰值1M,

本地提交了1G多的视频,大概使用了1分钟左右,70秒左右,完成了上传操作。还算马马虎虎。如果带宽购买提升一下,速度会更快,实际在前端页面内播放的时候,视频是高清的720p的,播放会出现卡顿,(因为视频需要下载,下载的时候,没有那么快了,就会出现卡顿,)需要等待才能完成下载,下载完成后,播放是流畅的。

没过多久,就花钱提升了带宽,改成了5M带宽,下载速度提升了,但是播放的时候,依然会偶尔卡顿,所以,提醒大家考虑好,到底要不要使用这种web服务器的带宽,做视频播放的架构。

网友们推荐的解决方案是,购买CDN,(中央节点加速器),那种另外算费用了,我没有测试过。

以上内容就是本次为大家分享的,本地上传视频到远程服务器的全部内容。

springmvc web网站开发上传视频到远程服务器解决方案相关推荐

  1. metinfo 上传文件到空间后显示500内部服务器错误,网站后台上传视频

    使用米拓企业建站系统搭建的网站,网站后台上传视频失败,一般是两种提示: 第一种.文件格式不允许,具体见下图: 从字面意义理解就是,上传的视频文件不属于系统支持的文件.这不代表文件无法上传了,用户只需要 ...

  2. 通过h5页面上传视频到Linux服务器

    1. 上传视频到本地 https://www.jb51.net/article/132531.htm 2. 上传视频到Linux服务器 建立ftp连接(保证服务器已经安装ftp及对应端口,帐号有权限) ...

  3. java上传文件到远程服务器(一)---HttpURLConnection方式

    我们在之前的文章 JavaWeb静态资源分离思路 中已经了解到要把文件上传到静态资源服务器有三种方式: java上传文件到ftp服务器(这个方案需要在静态资源服务器安装ftp服务) java使用Htt ...

  4. 文件怎么上传远程服务器,怎么上传文件到远程服务器

    怎么上传文件到远程服务器 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云服 ...

  5. 向服务器上传文件的命令,上传文件到远程服务器的命令

    上传文件到远程服务器的命令 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...

  6. Git上传本地文件到服务器,git上传文件到远程服务器

    git上传文件到远程服务器 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...

  7. 上传文件到服务器指令,上传文件到远程服务器的命令

    上传文件到远程服务器的命令 内容精选 换一换 将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式.本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云 ...

  8. java http上传文件到_如何使用java将文件上传到http远程服务器?

    本问题已经有最佳答案,请猛点这里访问. 我需要上传图像和TXT文件从我的应用程序到一个远程服务器(只是HTTP无FTP)使用Java.我的应用程序在JSF框架中.我搜索过,但没有找到合适的东西.有人能 ...

  9. Mac上传文件到远程服务器

    Mac上传文件到远程服务器,可以利用mac自带的终端来进行上传,使用sftp方式 终端shell菜单-> 新建远程连接 sftp方式,输入远程服务器ip 3. 然后连接,连的时候会让输入密码,输 ...

最新文章

  1. 【OpenCV】OpenCV中积分图函数与应用
  2. 别光顾着背单词了,每天花18分钟做这件事,英语水平暴增!
  3. 页面金额显示两位小数点问题
  4. 2017-8-22 训练日记
  5. hdu 2544 最短路 (dijkstra)
  6. hdu2489 Minimal Ratio Tree
  7. php数据库数组去重复数据库,PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)...
  8. 怎么看服务器上jdk安装位置,查看云服务器jdk安装路径
  9. 5折交叉验证_交叉验证的方法主要分为哪些?
  10. vm和openstack_最佳新OpenStack技巧和窍门
  11. LeetCode刷题(6)
  12. jsp后台批量导入excel表格数据到mysql中_运用java解析excel表,拿到表中的数据并批量插入数据库...
  13. 为什么都建议学java而不是python-为什么入门大数据选择Python而不是Java?
  14. gradle maven_Gradle vs Maven
  15. idea git 颜色代表什么意思
  16. JavaScript 每日一题---LeetCode 122. 买卖股票的最佳时机 II
  17. Linux驱动开发: 杂项字符设备
  18. Kafka学习笔记: Kafka 百惑梳理
  19. Python Django框架下做电商项目
  20. Mybatis-Plus配置和使用

热门文章

  1. docker进入容器报错:OCI runtime exec failed: exec failed: container_linux.go:345: starting container proces
  2. [附源码]计算机毕业设计JAVA公务员报名
  3. 开心自己的“冒泡排序”被百度百科收录 每一个人都会有梦想,或许不是每一个人,都可以实现自己的梦想,但要永远记得,在我们心里,曾经做过的梦。——To:Hygh
  4. 高薪就业面试题-张晨光-专题视频课程
  5. android手机量体温,手机体温测量软件
  6. Vue获取当前的实时时间+Vue生成计数器
  7. 卡通画(矢量风格画)特效生成算法
  8. 基于java瓷砖仓库管理计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  9. I2C接口的EEPROM烧写软件介绍以及源码下载
  10. 解决在ios5 simulator运行失败的问题 (weak linke)