上一节我们讲述了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.sndef download(self):path = self.file_pathbutton_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.workerserver_worker.short_description = '操作员'def server_name(self):return '%s' % self.server.snserver_name.short_description = "日志文件名"class Meta:verbose_name = "日志信息"verbose_name_plural = verbose_nameordering = ['-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上的文件路径对应关系。

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

FastDFS下载文件自定义命名相关推荐

  1. 华为云OBS对象存储使用临时URL访问,并对下载文件重命名

    目录 解读 1.使用临时URL访问OBS,并获取临时URL 官方文档 举例 2.使用临时URL访问OBS,并对临时URL下载的文件重命名 分析 举例 解读 在使用OBS进行对云上文件进行下载的时候,发 ...

  2. php下载文件并重命名,通过php下载文件并重命名

    通过php下载文件并重命名 $filename = dirname(__FILE__) . '/oldfilename.jpg'; $out_filename = 'newfilename.jpg'; ...

  3. java 下载db文件_Java下载文件自定义名称和格式类型

    response.setContentType()的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据,可以设置文件格式.参考数据如下: re ...

  4. 微信小程序下载文件并重命名,并在微信可以打开、保存并转发给好友

    在开发中,遇到一个需求,需要预览.下载并保存PDF文件,实现文件的重命名,可以转发给微信好友 开发代码如下 download() {// 判断文件目录是否存在, wx.env.USER_DATA_PA ...

  5. Php7实现文件下载,PHP7 SFTP下载文件并重命名该下载文件

    SFTP类 '',//sftp服务器地址 'port' => ,//sftp服务器端口 'username' => '', //sftp服务器用户名 'password' => '' ...

  6. vue下载文件并重命名

    vue的项目,需要做一个文件上传下载的功能.上传是OK的,然鹅因为上传到minio的时候,使用了随机数命名,导致文件名称就变成了一大串字符.被客户驳回来了.那好吧,就加一个重命名功能好了. 不过这个项 ...

  7. Vue项目:js模拟点击a标签下载文件并重命名,URL文件地址下载方法、请求接口下载文件方法总结。

    URL文件地址下载方法 一.正常情况下,我们都如此下载文件并修改文件名,在a标签上面添加download属性 //文件下载downFile() {if ('download' in document. ...

  8. Fastdfs+Nginx 下载文件重命名

    一:在Nginx上进行如下配置,这样Nginx就会截获url中的参数attname if ($arg_attname ~ "^(.+)") {#设置下载add_header Con ...

  9. js下载文件及命名(兼容多浏览器)

    js文件下载 ; 文件下载方法 ; IE中文件下载的方法 ; 使用IE下载 ; 文件下载兼容性 ; a标签下载 ; 浏览器下载 函数功能:实现主流浏览器的文件下载功能: 兼容性: >=IE10, ...

最新文章

  1. python3多进程 进程池 协程并发
  2. 3.1、Eclipse
  3. Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)
  4. 使用公用表表达式的递归查询
  5. R语言-时间日期函数
  6. Typecho网站隐藏内容公众号验证码查看涨粉丝插件(美化版)
  7. Mysql:如何使用limit
  8. xv6实验课程:Xv6和Unix实用程序
  9. 豪迈HOMAG变频器维修E107544豪迈变频器维修09F5C3B
  10. 加息对股市影响利好还是利空
  11. 区块链浏览器构建实战
  12. 打开桌面计算机不显示文件夹,Win10系统怎么让此电脑中的文件夹不显示?
  13. Docker中Swarm集群部署
  14. SQL Server如何导入mdf,ldf文件
  15. png格式解析+java代码生成png图片
  16. AdapterView之ListView简介
  17. linux桌面 仿android,Ubuntu粉丝必备!仿Ubuntu锁屏App体验
  18. 快消品企业如何逆境中求胜
  19. 音视频开发5. ZLMediaKit库入门使用 编译安装
  20. 数位dp入门题 洛谷P2657 [SCOI2009] windy 数

热门文章

  1. 计算机网络实验报告----计算机基本网络配置
  2. 异类:不一样的成功启示录
  3. python心形线代码_python实现心形线-女性时尚流行美容健康娱乐mv-ida网
  4. WPF 实现阿里云OSS私人云盘上传
  5. PHP海量excel数据导出方案解决 xlswriter性能测试
  6. Springboot+thymeleaf+IDEA——解决th标签的报错问题,爆红,找不到标签
  7. 金融壹账通“壹账通记忆增强网络”获对话系统学术竞赛佳绩
  8. Mable:NFT的下一步机会与它的流动性溢价
  9. 已上架APP如何更换公司的各项主体-苹果、安卓、支付、域名等
  10. dropbox_Plerd:兼容Dropbox的Markdown博客平台