上传视频到FTP服务器,是针对上个需求(上传视频到tomcat下并播放)完善的,毕竟上传到tomcat目录下的话,放几个视频文件磁盘就满了,所以存到另外的服务器是必然的。

由于video.js里播放视频的标签不支持绝对路径(如D:/这样的),只能存放在tomcat下面的相对路径,所以跳过了存放其他磁盘的步骤,直接开始试验FTP服务器了。

首先呢,当然是建立FTP服务器,要开两个端口号去建立两个FTP,

一个用来上传(需要用户名密码登录,设置写入权限、读取权限),一个用来播放(可以匿名访问,设置读取权限)

建立这个过程真是一把辛酸泪啊,,

先是碰到文件夹可以打开但浏览器打不开(在浏览器Internet选项-高级里面找到“使用被动FTP(用于防火墙和DSL调制解调器的兼容)”,默认是勾选的,把勾去掉就好了),

浏览器打不开的话呢,video标签就不能播放。。后来发现在家里这么建立FTP是好用的,但是在公司还是不行,

折腾很久之后想起来公司上网是要设置代理服务器的,这就导致了和FTP冲突?目前也没明白原因,不过既然不影响我干活了,就略过了。

===============================================================================================================

FTP服务器建立好了之后,下载一个commons-net-3.5.jar的包,网址http://commons.apache.org/proper/commons-net/download_net.cgi

然后把jar包拷进项目后,就可以进行开发啦。。。。(内心:终于到这一步了)

代码如下(上传、下载、删除):

FavFTPUtil.Javapackage com.favccxx.favsoft.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPReply;public class FavFTPUtil {/*** 上传文件(可供Action/Controller层使用)* @param hostname FTP服务器地址* @param port FTP服务器端口号* @param username FTP登录帐号* @param password FTP登录密码* @param pathname FTP服务器保存目录* @param fileName 上传到FTP服务器后的文件名称* @param inputStream 输入文件流* @return*/public static boolean uploadFile(String hostname, int port, String username, String password, String pathname, String fileName, InputStream inputStream){boolean flag = false;FTPClient ftpClient = new FTPClient();ftpClient.setControlEncoding("UTF-8");try {//连接FTP服务器ftpClient.connect(hostname, port);//登录FTP服务器ftpClient.login(username, password);//是否成功登录FTP服务器int replyCode = ftpClient.getReplyCode();if(!FTPReply.isPositiveCompletion(replyCode)){return flag;}ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.makeDirectory(pathname);ftpClient.changeWorkingDirectory(pathname);ftpClient.storeFile(fileName, inputStream);inputStream.close();ftpClient.logout();flag = true;} catch (Exception e) {e.printStackTrace();} finally{if(ftpClient.isConnected()){try {ftpClient.disconnect();} catch (IOException e) {e.printStackTrace();}}}return flag;}/*** 上传文件(可对文件进行重命名)* @param hostname FTP服务器地址* @param port FTP服务器端口号* @param username FTP登录帐号* @param password FTP登录密码* @param pathname FTP服务器保存目录* @param filename 上传到FTP服务器后的文件名称* @param originfilename 待上传文件的名称(绝对地址)* @return*/public static boolean uploadFileFromProduction(String hostname, int port, String username, String password, String pathname, String filename, String originfilename){boolean flag = false;try {InputStream inputStream = new FileInputStream(new File(originfilename));flag = uploadFile(hostname, port, username, password, pathname, filename, inputStream); } catch (Exception e) {e.printStackTrace();}return flag;}/*** 上传文件(不可以进行文件的重命名操作)* @param hostname FTP服务器地址* @param port FTP服务器端口号* @param username FTP登录帐号* @param password FTP登录密码* @param pathname FTP服务器保存目录* @param originfilename 待上传文件的名称(绝对地址)* @return*/public static boolean uploadFileFromProduction(String hostname, int port, String username, String password, String pathname, String originfilename){boolean flag = false;try {String fileName = new File(originfilename).getName();InputStream inputStream = new FileInputStream(new File(originfilename));flag = uploadFile(hostname, port, username, password, pathname, fileName, inputStream); } catch (Exception e) {e.printStackTrace();}return flag;}/*** 删除文件* @param hostname FTP服务器地址* @param port FTP服务器端口号* @param username FTP登录帐号* @param password FTP登录密码* @param pathname FTP服务器保存目录* @param filename 要删除的文件名称* @return*/public static boolean deleteFile(String hostname, int port, String username, String password, String pathname, String filename){boolean flag = false;FTPClient ftpClient = new FTPClient();try {//连接FTP服务器ftpClient.connect(hostname, port);//登录FTP服务器ftpClient.login(username, password);//验证FTP服务器是否登录成功int replyCode = ftpClient.getReplyCode();if(!FTPReply.isPositiveCompletion(replyCode)){return flag;}//切换FTP目录ftpClient.changeWorkingDirectory(pathname);ftpClient.dele(filename);ftpClient.logout();flag = true;} catch (Exception e) {e.printStackTrace();} finally{if(ftpClient.isConnected()){try {ftpClient.logout();} catch (IOException e) {}}}return flag;}/*** 下载文件* @param hostname FTP服务器地址* @param port FTP服务器端口号* @param username FTP登录帐号* @param password FTP登录密码* @param pathname FTP服务器文件目录* @param filename 文件名称* @param localpath 下载后的文件路径* @return*/public static boolean downloadFile(String hostname, int port, String username, String password, String pathname, String filename, String localpath){boolean flag = false;FTPClient ftpClient = new FTPClient();try {//连接FTP服务器ftpClient.connect(hostname, port);//登录FTP服务器ftpClient.login(username, password);//验证FTP服务器是否登录成功int replyCode = ftpClient.getReplyCode();if(!FTPReply.isPositiveCompletion(replyCode)){return flag;}//切换FTP目录ftpClient.changeWorkingDirectory(pathname);FTPFile[] ftpFiles = ftpClient.listFiles();for(FTPFile file : ftpFiles){if(filename.equalsIgnoreCase(file.getName())){File localFile = new File(localpath + "/" + file.getName());OutputStream os = new FileOutputStream(localFile);ftpClient.retrieveFile(file.getName(), os);os.close();}}ftpClient.logout();flag = true;} catch (Exception e) {e.printStackTrace();} finally{if(ftpClient.isConnected()){try {ftpClient.logout();} catch (IOException e) {}}}return flag;}}FavFTPUtilTest.javapackage com.favccxx.favsoft.util;import junit.framework.TestCase;public class FavFTPTest extends TestCase {public void testFavFTPUtil(){String hostname = "127.0.0.1";int port = 21;String username = "business";String password = "business";String pathname = "business/ebook"; String filename = "big.rar"; String originfilename = "C:\\Users\\Downloads\\Downloads.rar";FavFTPUtil.uploadFileFromProduction(hostname, port, username, password, pathname, filename, originfilename);// String localpath = "D:/";// FavFTPUtil.downloadFile(hostname, port, username, password, pathname, filename, localpath);}}

===============================================================================================================

上面代码的下载呢,是从FTP服务器下载到运行tomcat的机器,猛一看没有什么不对,

换个角度想,如果代码部署到测试服务器上,然后用其他机器访问测试服务器的网址,这时候点了下载就该懵逼啦,哈哈哈哈哈哈哈

如果想下载到客户端的机器上,参考如下代码~~~

 /*** 下载文件* @param hostname FTP服务器地址* @param port FTP服务器端口号* @param username FTP登录帐号* @param password FTP登录密码* @param pathname FTP服务器文件目录* @param filename 文件名称* @param localpath 下载后的文件路径* @return*/public static boolean downloadFile(String hostname, int port, String username, String password, String pathname, String filename, String localpath){boolean flag = false;FTPClient ftpClient = new FTPClient();try {//连接FTP服务器ftpClient.connect(hostname, port);//登录FTP服务器ftpClient.login(username, password);//验证FTP服务器是否登录成功int replyCode = ftpClient.getReplyCode();if(!FTPReply.isPositiveCompletion(replyCode)){return flag;}//切换FTP目录ftpClient.changeWorkingDirectory(pathname);FTPFile[] ftpFiles = ftpClient.listFiles();for(FTPFile file : ftpFiles){if(filename.equalsIgnoreCase(file.getName())){HttpServletResponse response = StrutsUtil.getResponse();response.reset();response.setContentType("application/octet-stream;charset=UTF-8");response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("gb2312"),"iso8859-1"));response.addHeader("Content-Length", "" + ftpFile.getSize());OutputStream os = response.getOutputStream();ftpClient.retrieveFile(ftpFile.getName(), os);os.flush();os.close();}}ftpClient.logout();flag = true;} catch (Exception e) {e.printStackTrace();} finally{if(ftpClient.isConnected()){try {ftpClient.logout();} catch (IOException e) {}}}return flag;}

===============================================================================================================

写到这里,差不多就算写完了~~,只要上传下载做完了之后,访问就很简单了~

这时候就要用到之前建立的匿名登录可以访问FTP的端口(只有读取权限),只要写全了网址就可以播放视频咯。

例子:ftp://192.168.1.1:21/upload/upload_20161014160316.mp4

代码:

<video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="870" height="350" data-setup="{}"><source src="ftp://192.168.1.1:21/upload/upload_20161014160316.mp4" type='video/mp4' /></video>

===============================================================================================================

到这里,所有的工作都做完啦,是不是很简单呢~~~(^o^)/~

===============================================================================================================
好吧,还没嘚瑟够两天,领导又给了新的需求,让同时支持TOMCAT目录上传和FTP上传,不过这个没有什么技术难度了~最后把存到数据库的路径改成了后半截(/portal/upload/upload_20161014160316.mp4这样的)~通过读取配置文件里的参数,确定用tomcat还是ftp服务器存放和读取视频。

上传视频到FTP服务器+播放相关推荐

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

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

  2. ftp服务器上传文件不行,ftp服务器上传文件不行

    ftp服务器上传文件不行 内容精选 换一换 本文介绍如何在 Linux 系统的本地机器上使用 FTP 服务,将文件从本地上传到云服务器中.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器 ...

  3. web上传文件到ftp服务器,web 上传文件到ftp服务器上

    web 上传文件到ftp服务器上 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分 ...

  4. shell上传文件到服务器,shell脚本上传文件到ftp服务器

    shell脚本上传文件到ftp服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器 ...

  5. springmvc web网站开发上传视频到远程服务器解决方案

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

  6. Java基于FTPClient上传文件到FTP服务器

    1.上传文件到FTP服务器,用FTPClient类,引入commons-net-3.1.jar包 2.参考代码: //上传ftppublic static boolean uploadFile(Str ...

  7. mysql备份一个表到ftp_备份部分mysql表并上传至指定ftp服务器目录中

    防伪码:忘情公子著 前几天领导安排了一个任务,让写一个脚本备份某mysql数据库中的部分表,并要将备份好的文件上传至某ftp服务器中,于是就有了以下的脚本 #!/bin/bash #Filename: ...

  8. mysql数据库上传ftp服务器中_备份部分mysql表并上传至指定ftp服务器目录中

    防伪码:忘情公子著 前几天领导安排了一个任务,让写一个脚本备份某mysql数据库中的部分表,并要将备份好的文件上传至某ftp服务器中,于是就有了以下的脚本 #!/bin/bash #Filename: ...

  9. java上传文件到ftp_java实现文件上传下载至ftp服务器

    以前做的一个项目,用到了文件上传下载至ftp服务器,现在对其进行一下复习,比较简单,一下就能看明白. 环境:首先,先安装ftp服务器,我是在win8本地用IIS配置的, 百度一下就可以找到安装文档. ...

  10. vba上传文件到ftp服务器指定目录下面

    vba上传文件到ftp服务器指定目录 +脚本形式 文章目录 1. 测试版本无校验: 2. 测试版本有检验 3. 文件不存在校验版本 4. 文件不存在校验+必填项校验版本 1. 测试版本无校验: Sub ...

最新文章

  1. 大话数据结构书籍及配套源码
  2. 《深入理解Java虚拟机》-----第3章 垃圾收集器与内存分配策略
  3. CPU芯片哪家强?电视处理器这么选就对了!
  4. php 循环从数据库分页取数据批量修改数据
  5. 2021.02.18 Visual QA论文阅读
  6. 建立http服务器,基于名称的虚拟主机
  7. 计算机系统性错误,《深入理解计算机系统-异常》
  8. OpenEIM以前在合作伙伴做的时候
  9. Kotlin入门(32)网络接口访问
  10. 基于Spring的包含特定注解bean的package扫描工具
  11. Quartz简单理解
  12. yii操作数据库(AR)
  13. u8服务器配置维护,u8客户端连接服务器配置
  14. 为什么谷歌浏览器打不开 Google Chrome打不开解决方法
  15. 精通使用K米短信教程
  16. HTML基础课程笔记
  17. 15个C语言“谜题”,有你知道的吗?
  18. ubuntu18.04系统安装+基本环境配置【原创】
  19. Python-维度dim的定义及其理解使用
  20. 交换机安全技术你还一知半解?赶紧来学习吧

热门文章

  1. DIrectX错误,提示显卡驱动更新
  2. 解决Oracle使用in语句不能超过1000问题
  3. 温度传感器—LM75
  4. 快速上手OSS图片视频上传
  5. 股票预测pythonlstm_LSTM预测股票涨跌--结合技术分析视角(一)
  6. VSCode中使用GitHub
  7. 龙卷风路径_龙卷风的目录
  8. 计算机的应届毕业生简历上可以写什么,计算机应届生简历范文计算机专业应届毕业生简历写.doc...
  9. 用计算机计算教学反思,计算器教学反思
  10. 古代常见文学常识汇总