网站标题大全,唐山地方志网站建设,网页制作素材下载免费,南阳企业网站排名优化作者#xff1a;狮子也疯狂 专栏#xff1a;《Fastdfs连续剧》 坚持做好每一步#xff0c;幸运之神自然会驾凌在你的身上 目录一. #x1f981; 前言二. #x1f981; 上传原理Ⅰ. #x1f407; 原理图解Ⅱ. #x1f407; 传输原理三. #x1f981; 实战演示Ⅰ. … 作者狮子也疯狂 专栏《Fastdfs连续剧》 坚持做好每一步幸运之神自然会驾凌在你的身上 目录一. 前言二. 上传原理Ⅰ. 原理图解Ⅱ. 传输原理三. 实战演示Ⅰ. 依赖加载Ⅱ. 编写fastdfs配置Ⅲ. 服务层实现3.1 上传图解3.2 原理步骤3.3 实现代码展示四. 总结一. 前言
我们在做项目的时候肯定少不了编写文件上传的这个功能但是在一般上传的文件都是上传到Windows本地如果需要部署的话那么我们就得将文件上传到虚拟机不然会因为写在本地的存储路径将无法得到存储而报错狮子之前在做那个校园招聘系统项目的时候就是没有意识到这个问题所以部署到虚拟机上传简历的功能就使用不了了。我们将文件上传到虚拟机的方法有两个 一、自己搭建一个文件目录然后在编写代码的过程中将ip和文件存储地址生成路径返回。 二、狮子介绍一个轻量级分布式文件系统使用起来比第一个方便一点并且解决了大数据量存储和负载均衡等问题。如下 二. 上传原理
Ⅰ. 原理图解 Ⅱ. 传输原理 首先客户端请求Tracker服务获取到存储服务器的ip地址和端口然后客户端根据返回的IP地址和端口号请求上传文件。存储服务器接收到请求后生产文件并且将文件内容写入磁盘并返回给客户端file_id、路径信息、文件名等信息。客户端保存相关信息上传完毕。 三. 实战演示
这里借助于fastdfs集成Nginx服务器通过Nginx的web服务代理访问分布式文件系统的存储节点从而实现通过http请求访问存储节点资源。 需要自己在虚拟机或者服务器搭建Fastdfs服务器和Nginx服务器。并且配置好要用的参数。 欲知安装详情请点击查看 Ⅰ. 依赖加载
在Maven POM文件中添加fastdfs依赖。 !-- FastDFS --dependencygroupIdcom.github.tobato/groupIdartifactIdfastdfs-client/artifactIdversion1.26.5/version/dependencyⅡ. 编写fastdfs配置
在yaml文件中添加fastdfs连接配置
fdfs:so-timeout: 3000connect-timeout: 6000tracker-list:- 192.168.66.140:22122fileUrl: 192.168.66.140tips 配置参数解释 so-timeout读取数据超时间connect-timeout连接超时时间tracker-list跟踪服务器主要作调度工作这里是一个数组的形式表示可以连接多个fileUrl自定义参数配置文件访问路径 Ⅲ. 服务层实现
3.1 上传图解 3.2 原理步骤 步骤 获取fastdfs的客户端对象FastFileStorageClient文件字节数组和文件名作为方法的两个参数。将图片字节数组文件转为字节输出流。获取文件名的后缀名。使用uploadFile()方法将文件上传。返回上传文件成功后的存储路径。 若上传失败则抛出自定义异常。 3.3 实现代码展示
public class FileServiceImpl implements FileService {Autowiredprivate FastFileStorageClient fastFileStorageClient;Value(${fdfs.fileUrl})private String fileUrl; //Nginx访问fastdfs中文件路径/*** 上传文件** param fileBytes 文件转成的字节数组* param fileName 文件名* return 上传后的文件访问路径*/Overridepublic String uploadImage(byte[] fileBytes, String fileName){if (fileBytes.length ! 0){try {// 1.将字节数组文件转为输入流InputStream inputStream new ByteArrayInputStream(fileBytes);
// 2.获取文件后缀名String fileSuffix fileName.substring(fileName.lastIndexOf(.) 1);
// 3.上传文件StorePath storePath fastFileStorageClient.uploadFile(inputStream, inputStream.available(), fileSuffix, null);
// 4.返回文件路径String imageUrl fileUrl/storePath.getFullPath();return imageUrl;}catch (IOException ioException){throw new BusException(CodeEnum.UPLOAD_FILE_ERROR);}}else {throw new BusException(CodeEnum.UPLOAD_FILE_ERROR);}}}四. 总结
今天分享如何使用fastdfs上传文件功能详细描述了上传的原理以及实战演示。希望能够帮到你。