Django提供了两个便捷的方法来获取当前的储存类:
DefaultStorage
[source]¶DefaultStorage
提供对当前的默认储存系统的延迟访问,类似于DEFAULT_FILE_STORAGE
中定义的那样。 DefaultStorage
内部使用了get_storage_class()
。
get_storage_class
(import_path=None)[source]¶返回一个类或者模块,这个类或者模块实现了存储API。
当没有带着get_storage_class
参数调用的时候, import_path
会返回当前默认的储存系统,类似于DEFAULT_FILE_STORAGE
中定义的那样。 如果提供了import_path
, get_storage_class
会尝试从提供的路径导入类或者模块,并且如果成功的话返回它。 如果导入不成功会抛出异常。
FileSystemStorage
类¶FileSystemStorage
(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)[source]¶FileSystemStorage
类在本地文件系统上实现了基本的文件存储功能。 它继承自Storage
,并且提供父类的所有公共方法的实现。
location
¶储存文件的目录的绝对路径。
默认为MEDIA_ROOT
设置的值。
file_permissions_mode
¶文件系统的许可,当文件保存时会接收到它。 默认为FILE_UPLOAD_PERMISSIONS
。
directory_permissions_mode
¶文件系统的许可,当目录保存时会接收到它。 默认为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
设置的。
accessed_time
(name)[source]¶返回包含文件的最后访问时间的原生datetime
对象。 对于不能够返回最后访问时间的储存系统,会抛出NotImplementedError
异常。
自1.10版以来已弃用 使用get_accessed_time()
。
created_time
(name)[source]¶返回包含文件创建时间的原生datetime
对象。 对于不能够返回创建时间的储存系统,会抛出NotImplementedError
异常。
自1.10版以来已弃用 请改用get_created_time()
。
get_accessed_time
(name)[source]¶返回文件的上次访问时间的datetime
。 对于无法返回上次访问时间的存储系统,这将引发NotImplementedError
。
如果USE_TZ
是True
,返回一个意识的datetime
,否则返回本地时区的天真的datetime
。
get_available_name
(name,max_length = None)[source] ¶返回基于name
参数的文件名称,它在目标储存系统中可用于写入新的内容。
如果提供了max_length
,文件名称长度不会超过它。
如果不能找到可用的、唯一的文件名称,会抛出SuspiciousFileOperation
异常。
如果name
命名的文件已存在,一个下划线加上随机7个数字或字母的字符串会添加到文件名称的末尾,扩展名之前。
get_created_time
(name)[source]¶返回文件创建时间的datetime
。
对于无法返回创建时间的存储系统,这将引发NotImplementedError
。
如果USE_TZ
是True
,返回一个意识的datetime
,否则返回本地时区的天真的datetime
。
get_modified_time
(name)[source]¶返回文件的上次修改时间的datetime
。 对于无法返回上次修改时间的存储系统,这将引发NotImplementedError
。
如果USE_TZ
是True
,返回一个意识的datetime
,否则返回本地时区的天真的datetime
。
generate_filename
(filename)[source]¶通过调用get_valid_name()
来验证filename
,并返回要传递给save()
方法的文件名。
filename
参数可能包含由FileField.upload_to
返回的路径。
在这种情况下,该路径将不会传递给get_valid_name()
,但将返回到结果名称。
默认实现使用os.path
操作。 如果这不适合您的存储空间,请覆盖此方法。
listdir
(path)[source]¶列出指定路径的内容,返回一个2元列表;第一个项目是目录,第二个项目是文件。 对于不能够提供列表功能的储存系统,抛出NotImplementedError
异常。
modified_time
(name)[source]¶返回包含最后修改时间的原生datetime
对象。 对于不能够返回最后修改时间的储存系统,抛出NotImplementedError
异常。
自1.10版以来已弃用 改用get_modified_time()
。
open
(name, mode='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
中的类似文件的对象的实例。
2017年9月6日