Django如何更改前端传入文件的名称? ٩( ‘ω‘ )و Django 问题

本文探讨了如何在Django中实现复杂的文件名重命名,不再受限于固定模式,而是根据用户特征和时间自动生成,包括id、昵称和时间戳,简化开发过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

当前网上搜索Django修改文件名称,大多数只能找修改图片名称的,而且很多都是从settings.py修改,还有一些说改storage.py。非常麻烦不说,而且可能还无法满足我们的需要,比如我要把文件名称不单改成当前时间,还要添加用户的一些特征信息,比如id,昵称等,上述的方法就十分不便。

解决方案

首先我们根据需要先取出文件的后缀名。因为我重命名的方式并不会保留文件后缀名。
取出文件后缀名的方式有很多种,下面我是使用split先把字符串拆分,在去最后一个.后面的字母,但是如果你可能碰到一些多后缀的文件(比如说.tar.gz)这种方式就不那么试用了,可以直接改写下面方法或者自行想办法取出即可。
在这里插入图片描述
上述截图,因为需要实现一些需求,写的比较复杂,核心改名的代码就下面三行。就是取出文件后缀,设置新文件名,在新文件名后添加后缀,然后在赋值给.name,即可。

# 取出文件后缀名,这里前端给我传的文件key为`文件`,大部分默认文件key为`file`
文件后缀 = str(request.FILES.get('文件').name).split('.')[-1]
# 设置文件名`用户特征信息`是我自己定义的变量,你可以在这里设置你需要传入的变量
文件名称 = f"{用户特征信息}_上传时间:{datetime.datetime.now().strftime('%Y年%m月%d日%H时%M分%S秒%f微秒')}.{文件后缀}"
# 修改文件名直接让文件.name等于新的文件名即可
request.FILES.get('文件').name = 文件名称

我带微秒的原因是,如果用户快速上传多个文件,文件命名也不会重复,如果发生文件命名重复,django会随机加一串后缀比较难看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻_觅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值