文件存储API

获取当前存储类

Django提供了两种访问当前存储类的简便方法:

DefaultStorage[source]

DefaultStorage provides lazy access to the current default storage system as defined by DEFAULT_FILE_STORAGE. DefaultStorage uses get_storage_class() internally.

get_storage_class(import_path=None)[source]

返回实现存储API的类或模块。

当调用import_path参数时,get_storage_class将返回由DEFAULT_FILE_STORAGE定义的当前默认存储系统。 如果提供了import_pathget_storage_class将尝试从给定路径中导入类或模块,并在成功时返回它。 如果导入不成功,将会引发异常。

FileSystemStorage

FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)[source]

The FileSystemStorage class implements basic file storage on a local filesystem. 它从Storage继承,并为其所有公共方法提供实现。

位置 T0> ¶ T1>

将保存文件的目录的绝对路径。 默认为您的MEDIA_ROOT设置的值。

BASE_URL T0> ¶ T1>

提供存储在此位置的文件的URL。 默认为您的MEDIA_URL设置的值。

file_permissions_mode T0> ¶ T1>

保存文件时将收到的文件系统权限。 默认为FILE_UPLOAD_PERMISSIONS

directory_permissions_mode T0> ¶ T1>

保存时目录将接收的文件系统权限。 缺省为FILE_UPLOAD_DIRECTORY_PERMISSIONS

注意

如果给定的文件名不存在,则FileSystemStorage.delete()方法不会引发异常。

get_created_time(name)[source]

返回系统ctime的datetime,即os.path.getctime() 在某些系统(如Unix)上,这是最后一次元数据更改的时间,而在其他系统(如Windows)上,则是文件的创建时间。

Storage

Storage[source]

Storage类提供了一个用于存储文件的标准化API,以及一组其他存储系统可以根据需要继承或覆盖的默认行为。

注意

当方法返回naive datetime对象时,使用的有效时区将是os.environ['TZ']的当前值。请注意,这通常是从Django的TIME_ZONE设置的。

delete(name)[source]

删除由name引用的文件。 如果目标存储系统不支持删除,则会引发NotImplementedError

exists(name)[source]

如果存储系统中已经存在由给定名称引用的文件,则返回True;如果名称可用于新文件,则返回False

get_accessed_time(name)[source]

返回文件上次访问时间的datetime 对于无法返回上次访问时间的存储系统,这将引发NotImplementedError

如果USE_TZTrue,则返回一个datetime,否则在本地时区返回一个天真的datetime

get_available_namenamemax_length = None[source]

根据name参数返回一个文件名,这个参数是免费的,可用于在目标存储系统上写入新内容。

如果提供的话,文件名的长度不会超过max_length 如果找不到一个空闲的唯一文件名,则会引发一个SuspiciousFileOperation异常。

如果name的文件已经存在,则在扩展名之前的文件名后面加下划线加一个随机的7个字符的字母数字字符串。

get_created_time(name)[source]

返回文件创建时间的datetime 对于无法返回创建时间的存储系统,这将引发NotImplementedError

如果USE_TZTrue,则返回一个datetime,否则在本地时区返回一个天真的datetime

get_modified_time(name)[source]

返回文件上次修改时间的datetime For storage systems unable to return the last modified time this will raise NotImplementedError.

如果USE_TZTrue,则返回一个datetime,否则在本地时区返回一个天真的datetime

get_valid_name(name)[source]

根据适用于目标存储系统的name参数返回文件名。

generate_filename(filename)[source]

通过调用get_valid_name()验证filename,并返回一个文件名传递给save()方法。

filename参数可以包含由FileField.upload_to返回的路径。 在这种情况下,路径将不会被传递给get_valid_name(),但会被预置回结果名称。

默认实现使用os.path操作。 如果这不适合您的存储,则覆盖此方法。

listdir(path)[source]

列出指定路径的内容,返回一个2元组的列表;第一个项目是目录,第二个项目是文件。 对于无法提供这样的列表的存储系统,这会引发一个NotImplementedError

opennamemode ='rb'[source]

打开name给出的文件。 请注意,虽然返回的文件保证是一个File对象,但它实际上可能是一些子类。 在远程文件存储的情况下,这意味着读取/写入可能相当缓慢,所以要注意。

path(name)[source]

使用Python的标准open()打开文件的本地文件系统路径。 对于不能从本地文件系统访问的存储系统,这会引发NotImplementedError

保存名称内容max_length =无[source] ¶ T6>

使用存储系统保存新文件,最好使用指定的名称。 如果已经存在一个名为name的文件,则存储系统可以根据需要修改文件名以获取唯一的名称。 存储的文件的实际名称将被返回。

max_length参数传递给get_available_name()

content参数必须是django.core.files.File的一个实例或者可以包装在File中的文件类对象。

size(name)[source]

返回由name引用的文件的总大小(以字节为单位)。 对于无法返回文件大小的存储系统,则会引发NotImplementedError

url(name)[source]

返回可以访问由name引用的文件内容的URL。 对于不支持URL访问的存储系统,这会引发NotImplementedError