文章目录

  • 搭建图片服务器
    • Nginx模块安装(Storage)
    • Nginx安装(Tracker)
  • 创建前端页面
    • index.jsp
  • 搭建web服务
    • pom.xml
    • web.xml
    • spring-mvc.xml
    • 文件实体类
    • 控制层
    • 添加fastDFS配置文件
    • 启动FastDFS服务,开始测试

搭建图片服务器

Nginx模块安装(Storage)

# 上传 fastdfs-nginx-module_v1.16.tar.gz 到 /opt 目录下(压缩包请自行下载)# 解压
tar -xf fastdfs-nginx-module_v1.16.tar.gz# 修改 config 文件,将文件中的 /usr/local/ 路径改为 /usr/
vim /opt/fastdfs-nginx-module/src/config# 将 fastdfs-nginx-module/src下的 mod_fastdfs.conf 拷贝至 /etc/fdfs 下
cp mod_fastdfs.conf /etc/fdfs# 修改 /etc/fdfs/mod_fastdfs.conf
vim /etc/fdfs/mod_fastdfs.confbase_path=/home/fastdfstracker_server=:22122 # (n个tracker配置n行) # tracker_server=10.1.220.x:22122 # url中包含group名称 url_have_group_name=true # 指定文件存储路径(配置的store路径) store_path0=/home/fastdfs/fdfs_storage# 将 libfdfsclient.so 拷贝至 /usr/lib 下
cp /usr/lib64/libfdfsclient.so /usr/lib/# 创建nginx/client目录
mkdir -p /var/temp/nginx/client

Nginx安装(Tracker)

  • 安装Nginx:参考链接
  • Nginx安装之后进行以下操作
# 拷贝配置文件
cd /opt/FastDFS/conf
cp http.conf mime.types /etc/fdfs/  # 是否覆盖:yes
# 修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
server { listen 80; server_name 10.1.220.247; #charset koi8-r; #access_log logs/host.access.log main; location /group1/M00 { root /home/fastdfs/fdfs_storage/data; ngx_fastdfs_module;}
# 重启Nginx
pkill -9 nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

创建前端页面

index.jsp

<%--上传文件,文件与文字相比较起来,内容较大,必须使用post方式提交--%>
<%--上传文件,和普通文件有区别,action接收参数也会区别对待,所以声明带文件提交的表单为"多部件表单"--%>
<form action="upload" method="post" enctype="multipart/form-data"><input type="file" name="fname"><br><button>提交</button>
</form>

搭建web服务

pom.xml

<!-- 打成war包 -->
<packaging>war</packaging><dependencies><!-- 因为有jsp页面,所以引用servlet依赖--><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><scope>provided</scope><version>2.5</version></dependency> <!-- 页面提交过来的请求,使用springmvc来处理--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.7.RELEASE</version></dependency> <!-- java连接fastDFS的客户端工具--><dependency><groupId>net.oschina.zcx7878</groupId><artifactId>fastdfs-client-java</artifactId><version>1.27.0.0</version></dependency> <!-- 图片上传到FastDFS需要用的到IO工具--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version></dependency> <!-- 图片保存到web服务器需要用到的IO工具--><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><!--用来转换java对象和json字符串,注意,2.7以上版本必须搭配spring5.0以上--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.8</version></dependency>
</dependencies><!-- 使用插件将Tomcat内嵌到web项目中 -->
<build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><port>8001</port><path>/</path></configuration><executions><execution><phase>package</phase><goals><goal>run</goal></goals></execution></executions></plugin></plugins>
</build>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://xmlns.jcp.org/xml/ns/javaee"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"id="WebApp_ID" version="3.1"><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring/spring-mvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--扫描注解的包--><context:component-scan base-package="controller"/><!--扫描控制器中的注解:@Response--><mvc:annotation-driven/><!--上传文件的解析器(规定上传文件的大小限制)--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!-- 上传文件最大限制:2GB--><property name="maxUploadSize" value="2048000000"/></bean>
</beans>

文件实体类

public class FileSystem implements Serializable {private String fileId;private String filePath;private String fileName;
}

控制层

@Controller
public class FileAction {/*** @param request 多部件表单的请求对象* @return 上传文件对象的json对象* * 上传文件的流程:*      1.把文件保存到web服务器*      2.从web服务器将文件上传到FastDFS*/@RequestMapping("upload")// MultipartHttpServletRequest:是httpservletRequest的强化版本,不仅可以装文本信息,还可以装图片文件信息public @ResponseBody FileSystem upload(MultipartHttpServletRequest request) throws Exception {FileSystem fileSystem = new FileSystem();/* 1.把文件保存到web服务器*/// 从页面请求中,获取上传的文件对象MultipartFile file = request.getFile("fname");// 从文件对象中获取 文件的原始名称String oldFileName = file.getOriginalFilename();// 通过字符串截取的方式,从文件原始名中获取文件的后缀 1. jpgString suffix = oldFileName.substring(oldFileName.lastIndexOf(".") + 1);// 为了避免文件因为同名而覆盖,生成全新的文件名String newFileName = UUID.randomUUID().toString() + "." + suffix;// 创建web服务器保存文件的目录(预先创建好D:/upload目录,否则系统找不到路径,会抛出异常)File toSaveFile = new File("D:/upload/" + newFileName);// 将路径转换成文件file.transferTo(toSaveFile);// 获取服务器的绝对路径String newFilePath = toSaveFile.getAbsolutePath();/* 2、把文件从web服务器上传到FastDFS*/ClientGlobal.initByProperties("config/fastdfs-client.properties");TrackerClient trackerClient = new TrackerClient();TrackerServer trackerServer = trackerClient.getConnection();StorageServer storageServer = null;StorageClient1 client = new StorageClient1(trackerServer, storageServer);NameValuePair[] list = new NameValuePair[1];list[0] = new NameValuePair("fileName", oldFileName);String fileId = client.upload_file1(newFilePath, suffix, list);trackerServer.close();// 封装fileSystem数据对象fileSystem.setFileId(fileId);fileSystem.setFileName(oldFileName);fileSystem.setFilePath(fileId);// 已经上传到FastDFS上,通过fileId来访问图片,所以fileId即为文件路径return fileSystem;}
}

添加fastDFS配置文件

fastdfs-client.properties:

fastdfs.connect_timeout_in_seconds = 5
fastdfs.network_timeout_in_seconds = 30
fastdfs.charset = UTF-8
fastdfs.http_anti_steal_token = false
fastdfs.http_secret_key = FastDFS1234567890
fastdfs.http_tracker_http_port = 80
fastdfs.tracker_servers = 10.1.220.247:22122

启动FastDFS服务,开始测试

[root@localhost /] /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
[root@localhost /] /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
[root@localhost /] /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

使用FastDFS实现图片服务器的功能【案例演示】相关推荐

  1. nginx+fastdfs搭建图片服务器

    本文作者:禹明明,叩丁狼高级讲师.原创文章,转载请注明出处. fastdfs 是淘宝资深架构师余庆贡献的一款开源分布式文件系统,通常用来做小文件的存储或访问服务,具体用途和架构我们就不多说了,可以看这 ...

  2. fastdfs 测试客户端_Nginx+FastDFS+MacOS图片服务器的搭建

    2019年12月11日 panlobal编写 第1版 有任何意见和建议,请反馈给我:我会继续优化该文章. 搭建成果展示 系统环境 本篇文章中系统环境:MacOS 10.14.4 :有关CentOS下搭 ...

  3. FastDFS图片服务器的原理和安装配置

    1. 分布式文件存储 FastDfs 1.1. 技术说明 FastDFS是用C语言编写的一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等 ...

  4. CentOS7设置静态IP、搭建单机版FastDFS图片服务器、使用FastDFS-Client客户端进行简单测试、实现图片上传、实现商品添加修改删除

    CentOS7设置静态IP.搭建单机版FastDFS图片服务器.使用FastDFS-Client客户端进行简单测试.实现图片上传.实现商品添加修改删除 CentOS7设置静态IP而且还可以上网 192 ...

  5. FastDFS搭建单机图片服务器(二)

    FastDFS搭建单机图片服务器(二) 根据 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 和 分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试 一步一步搭 ...

  6. kindeditor扩展粘贴截图功能修改图片上传路径并通过webapi上传图片到图片服务器...

    2019独角兽企业重金招聘Python工程师标准>>> kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. ...

  7. mui 图片预览(自定义)功能 - 案例篇

    mui 图片预览(自定义)功能 - 案例篇 实现目标: 点击图片,弹出层遮盖,并放大显示刚才点击的图片: 图片对应的标题,也一并显示. 效果截图: 重要提示Tips: 使用前,务必设置图片的alt属性 ...

  8. 图片服务器FastDFS的安装及使用

    FastDFS介绍 FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS ...

  9. FastDFS图片服务器(分布式文件系统)学习。

    参考:https://blog.csdn.net/hiqingtian/article/details/79413471 https://blog.csdn.net/sinat_40399893/ar ...

  10. 淘淘商城第三天—完成商品添加功能 商品类目选择 图片上传 图片服务器搭建 kindEditor富文本编辑器的使用 商品添加功能

    1.实现商品类目选择功能 1.1需求 在商品添加页面,点击"选择类目"显示商品类目列表: 请求初始化树形控件的url:/item/cat/list 1.2 EasyUI tree数 ...

最新文章

  1. iOS开发中使用[[UIApplication sharedApplication] openURL:]加载其它应用
  2. Delphi XE2 之 FireMonkey 入门(17) - 特效
  3. mysql php 增删数据,php学习之mysql数据的增删改查
  4. Qt中内存泄露和半自动内存管理
  5. 有限数字生成素数 (10 分)
  6. SpringBoot @Cacheable注解的属性使用
  7. install pymssql on centos
  8. maven安装与配置等相关知识
  9. abaqus 帮助文档
  10. 2020年javaWeb面试题(初)
  11. 系统检测,是否引证:否
  12. 新人学习java导论
  13. ctfshow MengXIn 下(pearcmd.php妙用条件竞争简单密码简单misc)
  14. MySQL 之1045错误
  15. 听高级产品经理来聊一聊,什么是产品架构
  16. 门电路图对照表——国标、IEEE、标准符号对照表
  17. cvxpy报错Encountered unexpected exception importing solver OSQP
  18. android 9.0监听来电,android9.0来电无法获取处理
  19. U盘无法拷贝4G以上的文件
  20. Linux-----管理用户脚本(shell)

热门文章

  1. wireshark抓组播数据_wireshark怎么抓包 wireshark抓包详细图文教程
  2. 在你可以执行与打印机有关的任务(例如页面设置或打印一个文档)之前,你必须已经安装打印机。你想现在安装打印机吗?
  3. 海洋女神亲身体验灵翼龙岛飞行任务--壮志凌云:空军指挥官穆维里克--完成后的诀窍总结...
  4. matlab的from模块_Matlab中SIMULINK的模块库以及比较常用的模块
  5. 多维度分析评价体系:高校教学质量大数据应用解决方案
  6. recover 没有捕获异常_Golang学习笔记之错误处理error、panic (抛出错误),recover(捕获错误...
  7. mysql查询1970年以后出生的人_1970年属狗女一生命运,70年属狗人一生灾难有哪些...
  8. 计算机保研英语,计算机保研面试英文自我介绍
  9. 《看聊天记录都学不会C语言?太菜了吧》(3)人艰不拆,代码都在谈恋爱?!
  10. 阿里云服务器最新价格表(标准收费报价表)