目录:
(1)FastDFS-其他命令的操作
(2)FastDFS-安装nginx扩展模块-提供Http访问
(3)SpringBoot集成FastDFS-文件上传方法封装
(4)SpringBoot集成FastDFS-文件下载方法封装
(5)SpringBoot集成FastDFS-文件删除方法封装
(6)SpringBoot-文件上传到FastDFS服务器
(1)FastDFS-其他命令的操作
首先上传一个文件:这个返回的结果信息很少,比上面的内容少很多,返回fileid:集群和远程文件地址
此时就不是2对文件了:只是一个
fdsf_file_info命令:返回上传文件的信息
fdfs_download_file :下载文件,没有指定下载路径默认下载根目录
可以指定下载路径
fdfs_delete_file:删除文件
我们操作情况下,使用java操作的不是测试的命令:fdfs_test,操作的是正常的上传fdfs_upload_file等命令
(2)FastDFS-安装nginx扩展模块-提供Http访问
在文件上传的时候,上传成功的信息中有提示我们可以通过某个路径去访问上传的文件,但是我们直接访问这个路径,却不可以,那么已经上传到FastDFS文件系统中的文件,我们如何在浏览器中访问呢?
FastDFS提供了一个Nginx扩展模块,利用该模块,我们可以通过Nginx访问已经上传到FastDFS上的文件
上面 上传的文件是不能直接访问的,需要使用Nginx的一个扩展插件。
上传fastdfs-nginx-module-master.zip
解压这个压缩包:
移动目录:
src里面有一些配置文件: mod-fastdfs.conf是扩展模块的配置文件
安装Nginx并且添加fastDFS模块
因为这个模块必须在Nginx的安装的过程中才能添加,所有我们需要重新安装一个nginx,为了和原来已安装的Nginx进行区分,我们把新安装的Nginx取名为nginx_fdfs
切换至解压后的Nginx主目录,执行配置操作
cd nginx-1.14.2
./configure --prefix=/usr/local/nginx_fdfs --add-module=/home/soft/fastdfs-nginx-module-master/src
- --prefix是指定nginx安装路径
- --add-module指定fastDFS的nginx模块的源代码路径
执行: 上面命令
依次执行make和make install命令
生成新安装的nginx_fdfs
执行命令:
将/home/soft/fastdfs-nginx-module-master/src(自己实际存放Nginx扩展模块的目录)目录下的mod_fastdfs.conf文件拷贝到 /etc/fdfs/目录下,这样才能正常启动Nginx
cp /home/soft/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
执行:
创建文件夹:
修改mod_fastdfs.conf配置文件
base_path=/opt/fastdfs/nginx_mod
tracker_server=192.168.235.128:22122
url_have_group_name = true
store_path0=/opt/fastdfs/storage/files
编辑:
修改:
修改:
修改:访问的时候是否带集群名称
修改:具体文件存储路径
#拦截请求路径中包含 /group[1-9]/M0[0-9] 的请求,用 fastdfs的Nginx 模块进行转发
location ~ /group[1-9]/M0[0-9] {
ngx_fastdfs_module;
}
修改:
修改:
ngx_fastdfs_module; #这个指令不是Nginx本身提供的,是扩展模块提供的,根据这个指令找到FastDFS提供的Nginx模块配置文件,然后找到Tracker,最终找到Stroager
进行启动:
关掉运行的nginx
重启或启动FastDFS服务进程
fdfs_trackerd /etc/fdfs/tracker.conf restart
fdfs_storaged /etc/fdfs/storage.conf restart
访问这张图片
上传一个json文件:
使用上传命令:
访问:
(3)SpringBoot集成FastDFS-文件上传方法封装
开启nginx,FastDFS
先创建一个空的工程:
创建Modul:
首先解压客户端:
使用命令把本地的工程安装 到本地仓库当中:使用这个命令之前需要自己的电脑配置了Maven的环境变量:
这样就可以引入FastDFS坐标依赖了:
把这个配置文件复制到项目中:
创建配置类:FastDFSConfig:
详细代码:
//上传文件的方法
public static void fileUpload(){
TrackerServer trackerServer = null;
StorageServer storageServer = null;
try {
//1.加载配置文件,默认去classpath下加载
ClientGlobal.init("fdfs_client.conf");
//2.创建TrackerClient对象
TrackerClient trackerClient = new TrackerClient();
//3.创建TrackerServer对象
trackerServer = trackerClient.getConnection();
//4.创建StorageServler对象
storageServer = trackerClient.getStoreStorage(trackerServer);
//5.创建StorageClient对象,这个对象完成对文件的操作
StorageClient storageClient = new StorageClient(trackerServer,storageServer);
//6.上传文件 第一个参数:本地文件路径 第二个参数:上传文件的后缀 第三个参数:文件信息
String [] uploadArray = storageClient.upload_file("D:/aa.txt","txt",null);
for (String str:uploadArray) {
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
if(storageServer != null){
try {
storageServer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(trackerServer != null){
try {
trackerServer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
这里修改上传文件的的参数
需要开放端口:22122、23000
启动运行:上传完成:
可以通过返回的信息进行访问:
可以把代码封装成工具类:
抽取获取StorageClient的方法:
public static StorageClient getStorageClient() throws IOException, MyException {
//1.加载配置文件,默认去classpath下加载
ClientGlobal.init("fdfs_client.conf");
//2.创建TrackerClient对象
TrackerClient trackerClient = new TrackerClient();
//3.创建TrackerServer对象
trackerServer = trackerClient.getConnection();
//4.创建StorageServler对象
storageServer = trackerClient.getStoreStorage(trackerServer);
//5.创建StorageClient对象,这个对象完成对文件的操作
StorageClient storageClient = new StorageClient(trackerServer,storageServer);
return storageClient;
}
获取存储节点的客户端对象:StorageCllient对象
改造文件上传的方法
public static void fileUpload(){
try {
//1. 获取StorageClient对象
StorageClient storageClient = getStorageClient();
//2.上传文件 第一个参数:本地文件路径 第二个参数:上传文件的后缀 第三个参数:文件信息
String [] uploadArray = storageClient.upload_file("D:/aa.txt","txt",null);
for (String str:uploadArray) {
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
closeFastDFS();
}
}
这个方法调用:这个是本地的上传方法,通过写本地的文件路径
这里调用上传方法:
还可以通过字节上传:这个写字节
(4)SpringBoot集成FastDFS-文件下载方法封装
下载文件的方法
//下载文件的方法
public static void fileDownload(){
try {
//1. 获取StorageClient对象
StorageClient storageClient = getStorageClient();
//2.下载文件 返回0表示成功,其它均表示失败
int num = storageClient.download_file("group1",
"M00/00/00/wKjrgFxOqueAAPWKAAAAKAM14xY563.txt","E:/bb.txt");
System.out.println(num);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
closeFastDFS();
}
}
固定路径
指定路径
可以封装下载数组的方法:
(5)SpringBoot集成FastDFS-文件删除方法封装
删除文件的方法
//删除文件的方法
public static void fileDelete(){
try {
//1. 获取StorageClient对象
StorageClient storageClient = getStorageClient();
//2.删除文件 返回0表示成功,其它均表示失败
int num = storageClient.delete_file("group1",
"M00/00/00/wKjrgFxOqueAAPWKAAAAKAM14xY563.txt");
System.out.println(num);
} catch (IOException e) {
e.printStackTrace();
} catch (MyException e) {
e.printStackTrace();
} finally {
closeFastDFS();
}
}
执行:
删除之后就不能访问了:
(6)SpringBoot-文件上传到FastDFS服务器
导入依赖:
修改配置文件:
创建index.html:
创建controller:UploadController:
选择一个文件:
点击上传: