文件存储 API¶
获取默认存储类¶
Django 提供了获取默认存储类的便捷方式
-
class
DefaultStorage
¶ DefaultStorage
提供对STORAGES
中default
键定义的默认存储系统的延迟访问。DefaultStorage
在内部使用storages
。
-
default_storage
¶ default_storage
是DefaultStorage
的实例。
FileSystemStorage
类¶
-
class
FileSystemStorage
(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)¶ 类
FileSystemStorage
在本地文件系统上实现基本文件存储。它继承自Storage
,并为其所有公共方法提供实现。-
location
¶ 将保存文件的目录的绝对路径。默认为
MEDIA_ROOT
设置的值。
-
file_permissions_mode
¶ 文件在保存时将获得的文件系统权限。默认为
FILE_UPLOAD_PERMISSIONS
。
-
directory_permissions_mode
¶ 目录在保存时将获得的文件系统权限。默认为
FILE_UPLOAD_DIRECTORY_PERMISSIONS
。
注意
FileSystemStorage.delete()
方法在给定的文件名不存在时不会引发异常。-
get_created_time
(name)¶ 返回系统的 ctime 的
datetime
,即os.path.getctime()
。在某些系统(如 Unix)上,这是最后一次元数据更改的时间,而在其他系统(如 Windows)上,这是文件的创建时间。
-
类 InMemoryStorage
¶
-
class
InMemoryStorage
(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)¶ 类
InMemoryStorage
实现基于内存的文件存储。它没有持久性,但可以通过避免磁盘访问来加速测试,因此很有用。-
location
¶ 分配给文件的目录名称的绝对路径。默认为
MEDIA_ROOT
设置的值。
-
file_permissions_mode
¶ 分配给文件的 file system 权限,提供与
FileSystemStorage
的兼容性。默认为FILE_UPLOAD_PERMISSIONS
。
-
directory_permissions_mode
¶ 分配给目录的 file system 权限,提供与
FileSystemStorage
的兼容性。默认为FILE_UPLOAD_DIRECTORY_PERMISSIONS
。
-
类 Storage
¶
-
class
Storage
¶ 类
Storage
提供了用于存储文件的标准化 API,以及一组所有其他存储系统可以继承或根据需要覆盖的默认行为。注意
当方法返回朴素的
datetime
对象时,将使用的有效时区是os.environ['TZ']
的当前值;请注意,这通常是从 Django 的TIME_ZONE
设置的。-
delete
(name)¶ 删除
name
引用的文件。如果目标存储系统不支持删除,这将引发NotImplementedError
。
-
exists
(name)¶ 如果存储系统中已存在给定名称引用的文件,则返回
True
,如果名称可用于新文件,则返回False
。
-
get_accessed_time
(name)¶ 返回文件的最后访问时间的
datetime
。对于无法返回最后访问时间的存储系统,这将引发NotImplementedError
。如果
USE_TZ
为True
,则返回一个感知datetime
,否则返回本地时区的朴素datetime
。
-
get_alternative_name
(file_root, file_ext)¶ 基于
file_root
和file_ext
参数返回一个替代文件名,在扩展名前追加一个下划线和一个 7 个字符的随机字母数字字符串。
-
get_available_name
(name, max_length=None)¶ 基于
name
参数返回一个文件名,该文件名是免费的,可用于在目标存储系统上写入新内容。如果提供了
max_length
,则文件名长度不会超过max_length
。如果找不到免费的唯一文件名,则会引发SuspiciousFileOperation
异常。如果已经存在具有
name
的文件,则调用get_alternative_name()
以获取替代名称。
-
get_created_time
(name)¶ 返回文件的创建时间
datetime
。对于无法返回创建时间的存储系统,这会引发NotImplementedError
。如果
USE_TZ
为True
,则返回一个感知datetime
,否则返回本地时区的朴素datetime
。
-
get_modified_time
(name)¶ 返回文件最后修改时间的
datetime
。对于无法返回最后修改时间的存储系统,这将引发NotImplementedError
。如果
USE_TZ
为True
,则返回一个感知datetime
,否则返回本地时区的朴素datetime
。
-
get_valid_name
(name)¶ 返回基于
name
参数的文件名,该参数适用于目标存储系统。
-
generate_filename
(filename)¶ 通过调用
get_valid_name()
验证filename
,并返回要传递给save()
方法的文件名。filename
参数可能包含FileField.upload_to
返回的路径。在这种情况下,路径不会传递给get_valid_name()
,但会预先添加到结果名称中。默认实现使用
os.path
操作。如果这不适用于你的存储,请覆盖此方法。
-
listdir
(path)¶ 列出指定路径的内容,返回一个包含两个列表的 2 元组;第一个项目是目录,第二个项目是文件。对于无法提供此类列表的存储系统,这将引发
NotImplementedError
。
-
open
(name, mode='rb')¶ 打开由
name
给出的文件。请注意,虽然返回的文件保证是一个File
对象,但它实际上可能是某个子类。对于远程文件存储,这意味着读取/写入可能非常慢,因此请注意。
-
path
(name)¶ 可以使用 Python 的标准
open()
打开文件的本地文件系统路径。对于无法从本地文件系统访问的存储系统,这将引发NotImplementedError
。
-
save
(name, content, max_length=None)¶ 使用存储系统保存新文件,最好使用指定的文件名。如果已经存在一个具有此名称
name
的文件,存储系统可能会根据需要修改文件名以获取唯一名称。将返回存储文件的实际名称。将
max_length
参数传递给get_available_name()
。content
参数必须是django.core.files.File
的实例或可包装在File
中的文件类似对象。
-
size
(name)¶ 返回
name
引用的文件总大小(以字节为单位)。对于无法返回文件大小的存储系统,这将引发NotImplementedError
。
-
url
(name)¶ 返回可以访问
name
引用的文件内容的 URL。对于不支持通过 URL 访问的存储系统,这将引发NotImplementedError
。
-