gpt4 book ai didi

django - 文件字段 : How to use upload_to with a whitespace in the name and path

转载 作者:行者123 更新时间:2023-12-05 02:12:05 32 4
gpt4 key购买 nike

我有一个允许我上传文件的模型,但由于某种原因,自定义 upload_to 函数中定义的空格在文件系统(或 s3)中被下划线替换文件名和文件夹路径。

有没有办法强制使用空格?

例如:文件“hello world.png”变为“hello_world.png”

ps:我知道使用空格是一种不好的做法,但这不是我的选择。

代码如下:

模型.py

one_file = models.FileField(
_('My label'),
null=True,
blank=True,
upload_to=one_file_name,
max_length=500,
#part for s3, using the local media doens't change anything
storage=PrivateMediaStorage(),
)

我的 upload_to 函数

def one_file_name(instance, filename):
extension = filename.split(".")[-1]
return f'folder name/subfolder name/{filename}.{extension}'

最佳答案

文件名中的空格无论如何都会导致 url 中的错误我认为这对您有帮助,Django 调用 get_valid_filename() 以在保存时对文件名进行一些更改 - 具体到您的情况,空格将替换为下划线或您想要的任何内容。 You can find the full docs这里。这是函数本身:

@keep_lazy_text
def get_valid_filename(s):
"""
Returns the given string converted to a string that can be used for a clean
filename. Specifically, leading and trailing spaces are removed; other
spaces are converted to underscores; and anything that is not a unicode
alphanumeric, dash, underscore, or dot, is removed.
>>> get_valid_filename("john's portrait in 2004.jpg")
'johns_portrait_in_2004.jpg'
"""
s = force_text(s).strip().replace(' ', '_')
return re.sub(r'(?u)[^-\w.]', '', s)

关于django - 文件字段 : How to use upload_to with a whitespace in the name and path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56475978/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com