当前位置: 首页 > news >正文

【Fastdfs实战】在本地如何将文件上传到Linux虚拟机

作者:狮子也疯狂
专栏:《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 --><dependency><groupId>com.github.tobato</groupId><artifactId>fastdfs-client</artifactId><version>1.26.5</version></dependency>

Ⅱ. 🐇 编写fastdfs配置

在yaml文件中添加fastdfs连接配置:

fdfs:so-timeout: 3000connect-timeout: 6000tracker-list:- 192.168.66.140:22122fileUrl: 192.168.66.140

tips:
配置参数解释

  • 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上传文件功能,详细描述了上传的原理以及实战演示。希望能够帮到你。😄

相关文章:

【Fastdfs实战】在本地如何将文件上传到Linux虚拟机

作者&#xff1a;狮子也疯狂 专栏&#xff1a;《Fastdfs连续剧》 坚持做好每一步&#xff0c;幸运之神自然会驾凌在你的身上 目录一. &#x1f981; 前言二. &#x1f981; 上传原理Ⅰ. &#x1f407; 原理图解Ⅱ. &#x1f407; 传输原理三. &#x1f981; 实战演示Ⅰ. &…...

ERP 系统的应用对企业财务会计信息系统内部控制的影响

(一)对企业的财务信息数据进行实时和动态管理传统的财务会计信息系统一般都是采用单一的软件系统&#xff0c;所以在信息的传递及处理上常常不能满足企业的需要&#xff0c;信息与其他部门存在不对称及滞后的现象。而ERP 系统是通过有效的技术手段将企业的各种分散的数据进行完…...

智慧物联网源码带手机端源码 物联网系统源码

在智慧工厂领域&#xff0c;智慧城市领域&#xff0c;都需要对设备进行监控。比如工厂需要对周围环境温度、湿度、气压、电压&#xff0c;灯的开关进行监控。这时候就需要物联网平台来进行管理。 推荐一个基于java开发的物联网平台&#xff0c;前端HTML带云组态、可接入视频监…...

AI绘画进军三次元,有人用它打造赛博女友?(diffusion)

目录0 写在前面1 AI绘画技术飞跃2 效果展示3 环境配置3.1 下载基础模型3.2 更新.NET和模型3.3 下载绘画模型3.4 启动项目3.5 标签配置4 结语0 写在前面 机器学习强基计划聚焦深度和广度&#xff0c;加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理&a…...

计算机网络高频知识点

目录 一、http状态码 二、浏览器怎么数据缓存 三、强缓存与协商缓存 1、强缓存 2、协商缓存 四、简单请求与复杂请求 五、PUT 请求类型 六、GET请求类型 七、GET 和 POST 的区别 八、跨域 1、什么时候会跨域 2、解决方式 九、计算机网络的七层协议与五层协议分别指…...

谈谈前端性能优化-面试版

前言 当我们去面试的时候&#xff0c;很大概率会被面试官问这么一个问题&#xff1a;你有尝试过对项目做性能优化吗&#xff1f;或者你了解哪些性能优化的方法&#xff1f;听到这个问题的你可能是这样的&#xff1a; 似曾相识但又说不清楚&#xff0c;往往只能零散地说出那么几…...

JAVA连接数据库——JDBC的简单使用

JDBC即Java数据库连接.用来实现Java程序对数据库增删查改。 为了对接Java程序和数据库&#xff0c;java.sql提供了很多api包含在java.sql和javax.sql里面 结构: DriverManager接口: 每一个数据库的驱动程序都必须去到DriverManager注册&#xff0c;生成一个Connection Conn…...

Pandas数据查询

Pandas数据查询 Pandas查询数据的几种方法 df.loc方法&#xff0c;根据行、列的标签值查询 df.iloc方法&#xff0c;根据行、列的数字位置查询 df.where方法 df.query方法 .loc既能查询&#xff0c;又能覆盖写入&#xff0c;强烈推荐&#xff01; Pandas使用df.loc查询数据…...

NLP-统计词频之处理停用词

前言 本文是该专栏的第1篇,后面会持续分享NLP的各种干货知识,值得关注。 一般来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或者应用服务。 举个例子,如Facebook News Feed这种社交网站推送,它的算法知道你的兴趣是自然语言处理,就会推送相关的广告或者…...

sort 定制排序规则(配合functools.cmp_to_key())

sort 定制排序规则&#xff08;配合functools.cmp_to_key()&#xff09; 配合例题学习 题目链接&#xff1a;179. 最大数 题目大意&#xff1a;给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&a…...

【华为OD机试模拟题】用 C++ 实现 - 内存池(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明内存池题目输入输出示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:…...

Python--深入浅出的装饰器--1

本章一起深入浅出一下装饰器。前面我们讲过一章装饰器了。不知道各位看懂了多少。每太看懂也没关系&#xff0c;本章就一起实操一下。简单的例子例1例2上述的两个例子&#xff0c;执行结果为&#xff1a;1423.为什么呢&#xff1f;&#xff1f;&#xff1f;解析语法糖&#xff…...

如何从0创建Spring Cloud Alibaba(多模块)

以一个父工程带两个Module&#xff08;test1、test2&#xff09;为例。 一、创建父工程 由于是模块化项目&#xff0c;那么父工程不需要实际的代码逻辑&#xff0c;因此无需创建src&#xff0c;那么可以有几种方式创建&#xff0c;例如&#xff1a; 使用Spring Initializr脚…...

【华为OD机试模拟题】用 C++ 实现 - 某公司组织招聘(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明招聘 | 某公司组织题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明...

Spring Cloud Sentinel实战(一)- Sentinel介绍

Sentinel介绍 什么是Sentinel 分布式系统的流量防卫兵&#xff1a;随着微服务的普及&#xff0c;服务调用的稳定性变得越来越重要。Sentinel以“流量”为切入点&#xff0c;在流量控制、断路、负载保护等多个领域开展工作&#xff0c;保障服务可靠性。 特点&#xff1a; 1. 2…...

基于SpringBoot的任务管理三种方式

文章目录前言一&#xff0c;异步任务1.1 无返回值异步任务调用1.2 有返回值异步任务调用二、定时任务2.1 背景介绍2.2 todo三、邮箱任务3.1 todo前言 开发 web 应用时&#xff0c;多数应用都具备任务调度功能&#xff0c;常见的任务包括异步任务、定时任务和邮件任务。我们以数…...

【华为OD机试模拟题】用 C++ 实现 - 查找单入口空闲区域(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明查找单入口空闲区域题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明示例...

普乐蛙部队vr训练设备军事训练vr体验馆设备元宇宙VR

案例一 地址&#xff1a;北京某部队 内置设备&#xff1a;乐享光轮、VR单车、暗黑战场、VR影院、游艺设备等 内容&#xff1a;部队增加VR体验设备&#xff0c;一、可以在强训练后&#xff0c;进行放松娱乐&#xff0c;也可以锻炼&#xff1b;二、VR设备可以模拟训练场景来进…...

大数据Hadoop教程-学习笔记05【Apache Hive DML语句与函数使用】

视频教程&#xff1a;哔哩哔哩网站&#xff1a;黑马大数据Hadoop入门视频教程 总时长&#xff1a;14:22:04教程资源: https://pan.baidu.com/s/1WYgyI3KgbzKzFD639lA-_g 提取码: 6666【P001-P017】大数据Hadoop教程-学习笔记01【大数据导论与Linux基础】【17p】【P018-P037】大…...

Unity动画转Three.js动画

一&#xff1a;应用场景 在工作中&#xff0c;由于算法给到的动画文件是Unity的.anim格式动画文件&#xff0c;这个格式不能直接在Web端用Three.js引擎运行。因此需要将.anim格式的动画文件转换为Three.js的AnimationClip动画对象。 二&#xff1a;.ANIM格式与AnimationClip对…...

基于OCR与NLP的智能账单分析系统:从数据处理到消费洞察

1. 项目概述&#xff1a;一个AI驱动的家庭账单智能分析系统最近在GitHub上看到一个挺有意思的项目&#xff0c;叫ai_code_family_bill。光看名字&#xff0c;你大概能猜到它和家庭账单、AI分析有关。作为一个长期和代码、数据打交道的技术人&#xff0c;我第一反应是&#xff1…...

工程师视角:礼品卡系统设计缺陷分析与安全消费指南

1. 从“设计工具”到“消费陷阱”&#xff1a;一位工程师的假日购物避坑指南又到年底了&#xff0c;办公室里讨论“给客户/团队送什么礼物好”的声音又多了起来。作为一名在电子设计自动化&#xff08;EDA&#xff09;和可编程逻辑工具领域泡了十几年的工程师&#xff0c;我习惯…...

AI编程工具的内卷:Copilot、Cursor、通义灵码,谁能笑到最后?

当“内卷”的风吹到AI编程工具2026年&#xff0c;AI编程工具已不再是新鲜事物&#xff0c;而是开发者工具箱中的标配。从最初的代码补全&#xff0c;到如今的全栈智能体&#xff0c;这个赛道正经历着一场前所未有的“内卷”。GitHub Copilot、Cursor、通义灵码三足鼎立&#xf…...

机器学习在资产管理中的应用:从数据到投资组合的端到端框架

1. 项目概述&#xff1a;当机器学习遇见资产管理如果你在资产管理行业待过&#xff0c;或者对量化投资感兴趣&#xff0c;那你肯定不止一次想过&#xff1a;那些复杂的市场数据、财报、新闻&#xff0c;能不能让机器来帮我们分析&#xff0c;甚至做出决策&#xff1f;firmai/ma…...

AI编码助手重复犯错?4大策略构建可控的智能编程伙伴

1. 项目概述&#xff1a;当AI编码助手陷入“重复犯错”的怪圈最近和几个团队的技术负责人聊天&#xff0c;发现大家都有个共同的烦恼&#xff1a;项目里引入的AI编码助手&#xff08;或者叫AI编程副驾&#xff09;&#xff0c;用着用着就发现它好像“不长记性”。同一个项目里&…...

医疗AI数据偏见:从耳镜图像分类看模型泛化陷阱与实战避坑指南

1. 项目概述与核心挑战作为一名在医疗AI领域摸爬滚打了十多年的从业者&#xff0c;我见过太多“实验室里天花乱坠&#xff0c;临床上寸步难行”的模型。最近&#xff0c;我和团队深入剖析了一项关于利用人工智能&#xff08;AI&#xff09;进行中耳炎耳镜图像分类的研究&#x…...

Hperledger Fabric入门课程3 ——软硬件环境

购买专栏前请认真阅读:《Fabric项目学习笔记》专栏介绍 1. 硬件环境 不论是在当前系统上运行、云服务器还是虚拟机,建议内存4G或以上,硬盘空间建议50G以上。 2. 操作系统 Fabric 的操作一般在Linux 或 MacOS上,Mac暂时不支持Apple Silicon芯片即m1以后的芯片。 如果读者…...

从零搭建机器人抓取系统:OpenClaw工作坊实践指南

1. 项目概述&#xff1a;一个为初学者打开机器人抓取大门的实践工作坊如果你对机器人技术&#xff0c;特别是让机械臂“学会”抓取物体这件事充满好奇&#xff0c;但又觉得它高深莫测、无从下手&#xff0c;那么jelmerdejong/openclaw-beginners-workshop这个项目就是为你量身打…...

避开学术‘红线’:手把手教你用AI+ArcMap合法合规处理论文中的中国地图

科研地图合规处理全流程&#xff1a;从标准地图到安全应用的实战指南 在学术研究中&#xff0c;地图作为重要的空间表达工具&#xff0c;其规范使用直接关系到研究成果的合法性和可信度。近年来&#xff0c;随着科研管理日趋严格&#xff0c;地图使用不当导致的论文撤稿、项目终…...

Docker Compose 镜像检测脚本(支持自动扫描 + 手动输入 YAML)

在日常运维中&#xff0c;经常会遇到这样一个问题&#xff1a; docker-compose 文件里定义了很多镜像&#xff0c;但本地是否已经存在不清楚 如果一个个 docker pull 或 docker images 去对比&#xff0c;会非常低效。 因此我们可以写一个脚本&#xff0c;自动解析 docker-com…...