上传视频到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.Java
package 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);