FastDFS下载文件自定义命名

2023-10-30

上一节我们讲述了FastDFS的搭建和文件的上传:docker搭建FastDFS及遇到的问题解决_花开花落与云卷云舒的博客-CSDN博客

这一节我们讲讲如何将上传的文件下载到我们的本机并还原为原来的文件名

一、前言

在上一节中,我们知道我们上传的文件会经过编码成一大串字符串;

如:

如果是这样的话,我们下载之后还是这个一大串的文件名,根本不知道这个文件原来是什么名字 ;所以我们就得想办法进行还原成原文件的名字,然后下载。

二、文件名还原

还原文件名我们可以分为3个步骤操作;首先,经过我多次的验证证明,在浏览器下载路由最后面添加filename=xx.zip可以将文件名还原。

经过上面的思路,我们就想办法解决。在我们上一节创建的storage容器中,已经有nginx,所以我使用storage容器中内置的就行了,不需要我们再去创建nginx容器。 

2.1 我们将上传的文件名加上?filename=xx.zip保存在数据库中

这里我是使用django进行操作的,所以在model.py中添加代码,主要是file_path字段;

class SubmitLog(models.Model):
    """
    上传测试完成的log日志
    """
    server = models.ForeignKey("Servers", on_delete=models.CASCADE, verbose_name="服务器SN")
    # log = models.FileField(upload_to='./autotest_log', null=True, blank=True, verbose_name="日志")
    file_path = models.CharField(max_length=255, null=True, blank=True, verbose_name="文件存放路径")
    log_date = models.DateTimeField(default=timezone.now, verbose_name="提交时间")

    def __str__(self):
        return self.server.sn

    def download(self):
        path = self.file_path
        button_html = "<a href='{}'>下载文件</a>".format(path)
        return format_html(button_html)
    download.short_description = format_html("""<a  href='#' style="position: relative;left: -12px;">下载文件</a>""")

    def server_worker(self):
        return '%s' % self.server.worker
    server_worker.short_description = '操作员'

    def server_name(self):
        return '%s' % self.server.sn
    server_name.short_description = "日志文件名"

    class Meta:
        verbose_name = "日志信息"
        verbose_name_plural = verbose_name
        ordering = ['-log_date']
        db_table = "SubmitLog"

同models.py目录的admin.py中添加

@admin.register(SubmitLog)
class SubmitLogAdmin(admin.ModelAdmin):
    list_display = ['server', 'server_worker', 'server_name', 'download']
    search_fields = ['server__sn', 'server__worker']

 效果如下:

 

2.2 修改storage容器中的nginx配置文件;

  • 进入storage容器,找到nginx配置文件nginx.conf
(base) [root@localhost ~]# docker exec -it storage bash
[root@localhost nginx-1.12.2]# cd conf
[root@localhost conf]# vi nginx.conf
  • nginx.conf中找到这一个服务器,改成如下配置;对应上一节创建storage容器时的配置:

docker run --privileged=true -dit --network=host --name storage -e TRACKER_SERVER=192.168.33.3:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

也可以看你上传文件时的路径确定路径:


 # another virtual host using mix of IP-, name-, and port-based configuration
 #

server {
        listen       8888;
        location /group1/M00 {
            root /var/fdfs;
            add_header Content-Disposition "attachment;filename=$arg_attname";
            ngx_fastdfs_module;
        }
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    }

保存修改,退出容器;

重启storage容器;


(base) [root@localhost ~]# docker stop storage
storage
(base) [root@localhost ~]# docker restart storage
storage

2.3 直接浏览器访问;

这种方式直接跳过了2.1中的数据库配置,直接浏览器访问。

 至此,FastDFS文件重命名就完成了!

下载时,在fastdfs上传返回的文件路径后面添加参数 格式为:?filename=文件名.后缀 即可下载。所以需要有张专门的数据表来保存原始文件名称与fastdfs上的文件路径对应关系。

博主这里诚心推荐各种话费、流量、电费、视频会员、音乐会员优惠充值公众号,慢充可以有很大优惠哦!真实可靠博主才推荐的!

                                    

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastDFS下载文件自定义命名 的相关文章

随机推荐

  • RPN详解

    转载原文 https blog csdn net lanran2 article details 54376126 这里的博客都挺好的 转载一下 留的 RPN全称是Region Proposal Network Region Proposa
  • 计算机视觉面试题整理

    1 介绍目标检测网络yolo系列以及ssd系列的原理 yolo对小目标检测不好的原因 除了缩小anchor外还可以如何改善 Yolo目标检测 YOLO是一种实时目标检测算法 其核心思想是将目标检测问题归为一个回归问题 直接从输入图像中预测目
  • 小程序:微信开发者工具中页面一片空白怎么办?

    试过网上的更新工具 重启什么的 都无效 后面找到办法了 地雷 先删除 wxml 中的所有内容 换成最简单的
  • Required field 'serverProtocolVersion' is unset

    java sql SQLException Could not establish connection to jdbc hive2 localhost 10000 Required field serverProtocolVersion
  • 大数据可视化课程笔记 4

    文章目录 第四章 比例数据可视化 4 1 比例数据在大数据中的应用 4 2 整体与部分 4 2 1 饼图 4 2 2 环形图 4 2 3 比例中的重叠 4 2 4 矩形树图 4 3 时空比例 第四章 比例数据可视化 4 1 比例数据在大数据
  • 密码强度检测器

    我的CSDN主页 python 每日一练 题目 代码运行效果 完整代码 我的博文推荐 基础更熟代码更优 再炼同类问题 2022 11 27试炼 练习题目 定义一个名为 isStrongPassword 的函数 该函数将字符串作为参数 功能是
  • yolov5篇-快速开始使用yolov5

    基本需求 需要python gt 3 8和pip即可 剩下的环境搭建需求已经被列在即将下载的文件中的 requirements txt 中了 当然需要注意的是 如果你的电脑上被安装了很多的python版本 还请确定一下你使用的是否是正确的那
  • 在离线服务器上创建深度学习虚拟环境

    在离线服务器上创建深度学习虚拟环境 一 安装虚拟机 1 虚拟机软件和Ubuntu下载链接 2 注意事项 二 Linux平台下Anaconda虚拟环境配置 1 Anaconda安装 2 配置自己所需的深度学习环境 3 打包虚拟环境传送到服务器
  • C++中类和函数类型在java中的对应

    C Java 虚函数 普通函数 纯虚函数 抽象函数 抽象类 抽象类 虚基类 接口
  • C# 辗转相除法求最大公约数

    辗转相除法求最大公约数 public static void CalcGCD int largeNumber int smallNumber out int GCD GCD 1 int remain 1 while remain 0 rem
  • 推挽输出&&开漏输出

    在学习STM32的时候 我发现了一个很值得研究学习的问题 下面 用我的理解来阐述一遍 这其中的原理 首先请看电路图 在给GPIO配置输出的时候 其有两种工作模式可选 分别是推挽输出和开漏输出 在此之前先得了解mos管的工作原理 为了方便大家
  • 软件测试工作内容和职责有哪些

    目前 在IT行业中测试的职位数量仅次于开发 可以说是第二大技术就业岗位 然而许多人对测试师工作的理解还停留在 只需要像用户一样使用产品 然后发现有问题提交报告就行了 其实这是极其不准确的 软件测试师在测试产品前后通常有很多工作要做 下面我们
  • 计网笔记(1)- 计算机网络和因特网

    本章主要内容 构成网络的基本硬件和软件 我们将从网络的边缘开始 介绍网络中运行的端系统和网络应用 接下来探究网络的核心 介绍传输数据的链路和交换机 最后是连接端系统和网络核心的接入网和物理媒体 网络中数据的时延 丢包 吞吐量 计算机联网时的
  • stm32 串口发数据 0x00 变 0x80

    stm32 串口发数据 0x00 变 0x80 一般配置奇校验odd和偶校验even的时候 会出现这个问题 根本原因是stm32在计算长度的时候 会把校验位也计算进去 所以你之前设置的数据位8要改成数据位9才能正常运行 USART Init
  • Android Studio升级异常:Error : Program type already present: android.support.design.widget.CoordinatorLa

    解决的方案在build gradle增加 implementation com android support design 27 1 0 如图 最后Build一下就ok了 希望你跟我是一样的错误 能帮到你最好
  • [个人笔记]操作系统复习笔记

    一 绪论 OS的作用 用户与硬件之间的接口 管理计算机资源 抽象计算机资源 OS的发展 单道批处理系统 用户程序交给监控程序 由监控程序控制作业一个接一个交给IO处理 CPU等待IO 内存浪费 资源浪费 多道批处理系统 当一个作业在等待IO
  • 手动安装Kylin5.0版本的过程

    官方文档 https kylin apache org 目前kylin3 4版本是有docker版本和安装包的 5 0只有docker没有安装包 安装包 https kylin apache org download 安装kylin5 0
  • 56. 合并区间 57. 插入区间 66. 加一

    56 合并区间 以数组 intervals 表示若干个区间的集合 其中单个区间为 intervals i starti endi 请你合并所有重叠的区间 并返回 一个不重叠的区间数组 该数组需恰好覆盖输入中的所有区间 示例 1 输入 int
  • Win11怎么共享文件夹?Win11创建共享文件夹的方法

    共享文件夹能够实现在同一个局域网或者同一个工作组之内共享资源 这样不仅能够减少资源传递的时间 还可以提高工作效率 那么Win11怎么共享文件夹呢 还有详细的系统重装教程可阅读 具体操作如下 1 首先 按键盘上的 Win X 组合键 或右键点
  • FastDFS下载文件自定义命名

    上一节我们讲述了FastDFS的搭建和文件的上传 docker搭建FastDFS及遇到的问题解决 花开花落与云卷云舒的博客 CSDN博客 这一节我们讲讲如何将上传的文件下载到我们的本机并还原为原来的文件名 一 前言 在上一节中 我们知道我们