文件存储API

获取默认存储类

Django提供了访问默认存储类的便捷方法:

storages

定义的存储实例 STORAGES

class DefaultStorage[源代码]

DefaultStorage 提供对由定义的默认存储系统的延迟访问 default 键入 STORAGESDefaultStorage 用途 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 设置。

base_url

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

file_permissions_mode

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

directory_permissions_mode

目录保存时将接收的文件系统权限。默认为 FILE_UPLOAD_DIRECTORY_PERMISSIONS .

备注

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

get_created_time(name)[源代码]

返回A datetime 系统的CTIME,即 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 布景。

base_url

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

file_permissions_mode

为与兼容而提供的分配给文件的文件系统权限 FileSystemStorage 。默认为 FILE_UPLOAD_PERMISSIONS

directory_permissions_mode

分配给目录的文件系统权限,提供与兼容 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)[源代码]

返回A datetime 上次访问文件的时间。对于无法返回上次访问时间的存储系统,这将导致 NotImplementedError .

如果 USE_TZTrue ,返回一个已知 datetime ,否则返回一个幼稚的 datetime 在本地时区。

get_alternative_name(file_root, file_ext)[源代码]

返回基于 file_rootfile_ext 参数,一个下划线加上一个随机的7个字符的字母数字字符串被附加到扩展名之前的文件名中。

get_available_name(name, max_length=None)[源代码]

返回基于 name 可供在目标存储系统上写入新内容的免费参数。

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

如果有文件 name 已经存在, get_alternative_name() 调用以获取备用名称。

get_created_time(name)[源代码]

返回A datetime 文件的创建时间。对于无法返回创建时间的存储系统,这将导致 NotImplementedError .

如果 USE_TZTrue ,返回一个已知 datetime ,否则返回一个幼稚的 datetime 在本地时区。

get_modified_time(name)[源代码]

返回A datetime 文件的上次修改时间。对于无法返回上次修改时间的存储系统,这将引发 NotImplementedError .

如果 USE_TZTrue ,返回一个已知 datetime ,否则返回一个幼稚的 datetime 在本地时区。

get_valid_name(name)[源代码]

返回基于 name 适用于目标存储系统的参数。

generate_filename(filename)[源代码]

验证 filename 通过调用 get_valid_name() 并返回要传递给 save() 方法。

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

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

listdir(path)[源代码]

列出指定路径的内容,返回两组列表;第一项是目录,第二项是文件。对于无法提供此类列表的存储系统,这将引发 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)[源代码]

返回由引用的文件内容的URL name 可以访问。对于不支持按URL访问的存储系统,这将导致 NotImplementedError 相反。