上传视频到FTP服务器+播放
上传视频到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服务器+播放相关推荐
- 通过h5页面上传视频到Linux服务器
1. 上传视频到本地 https://www.jb51.net/article/132531.htm 2. 上传视频到Linux服务器 建立ftp连接(保证服务器已经安装ftp及对应端口,帐号有权限) ...
- ftp服务器上传文件不行,ftp服务器上传文件不行
ftp服务器上传文件不行 内容精选 换一换 本文介绍如何在 Linux 系统的本地机器上使用 FTP 服务,将文件从本地上传到云服务器中.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器 ...
- web上传文件到ftp服务器,web 上传文件到ftp服务器上
web 上传文件到ftp服务器上 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器上分 ...
- shell上传文件到服务器,shell脚本上传文件到ftp服务器
shell脚本上传文件到ftp服务器 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具,将文件上传到云服务器.例如QQ.exe.在本地主机和Windows云服务器 ...
- springmvc web网站开发上传视频到远程服务器解决方案
springmvc web网站开发上传视频到远程服务器解决方案!近期在给学校做官方网站设计时,有一个业务需求是,后台要增加一个视频管理模块,管理员在后台可以把本地硬盘剪辑好的视频文件,上传到远程服务器 ...
- Java基于FTPClient上传文件到FTP服务器
1.上传文件到FTP服务器,用FTPClient类,引入commons-net-3.1.jar包 2.参考代码: //上传ftppublic static boolean uploadFile(Str ...
- mysql备份一个表到ftp_备份部分mysql表并上传至指定ftp服务器目录中
防伪码:忘情公子著 前几天领导安排了一个任务,让写一个脚本备份某mysql数据库中的部分表,并要将备份好的文件上传至某ftp服务器中,于是就有了以下的脚本 #!/bin/bash #Filename: ...
- mysql数据库上传ftp服务器中_备份部分mysql表并上传至指定ftp服务器目录中
防伪码:忘情公子著 前几天领导安排了一个任务,让写一个脚本备份某mysql数据库中的部分表,并要将备份好的文件上传至某ftp服务器中,于是就有了以下的脚本 #!/bin/bash #Filename: ...
- java上传文件到ftp_java实现文件上传下载至ftp服务器
以前做的一个项目,用到了文件上传下载至ftp服务器,现在对其进行一下复习,比较简单,一下就能看明白. 环境:首先,先安装ftp服务器,我是在win8本地用IIS配置的, 百度一下就可以找到安装文档. ...
- vba上传文件到ftp服务器指定目录下面
vba上传文件到ftp服务器指定目录 +脚本形式 文章目录 1. 测试版本无校验: 2. 测试版本有检验 3. 文件不存在校验版本 4. 文件不存在校验+必填项校验版本 1. 测试版本无校验: Sub ...
最新文章
- 大话数据结构书籍及配套源码
- 《深入理解Java虚拟机》-----第3章 垃圾收集器与内存分配策略
- CPU芯片哪家强?电视处理器这么选就对了!
- php 循环从数据库分页取数据批量修改数据
- 2021.02.18 Visual QA论文阅读
- 建立http服务器,基于名称的虚拟主机
- 计算机系统性错误,《深入理解计算机系统-异常》
- OpenEIM以前在合作伙伴做的时候
- Kotlin入门(32)网络接口访问
- 基于Spring的包含特定注解bean的package扫描工具
- Quartz简单理解
- yii操作数据库(AR)
- u8服务器配置维护,u8客户端连接服务器配置
- 为什么谷歌浏览器打不开 Google Chrome打不开解决方法
- 精通使用K米短信教程
- HTML基础课程笔记
- 15个C语言“谜题”,有你知道的吗?
- ubuntu18.04系统安装+基本环境配置【原创】
- Python-维度dim的定义及其理解使用
- 交换机安全技术你还一知半解?赶紧来学习吧