{"title":"文件存储 API","version":"6.1","locale":"zh-hans","docname":"ref/files/storage","url":"/zh-hans/6.1/ref/files/storage/","canonical":"https://djangodocs.dev/zh-hans/6.1/ref/files/storage/","summary":"获取默认的存储类： Link to this heading # Django 提供了便捷的方式来访问默认的存储类： storages Link to this definition # 一个类似字典的对象，允许使用 STORAGES 中定义的别名检索存储实例。 storages 有一个属性 backends ，它默认为…","html":"<span id=\"file-storage-api\"></span><h1>文件存储 API<a class=\"heading-anchor\" href=\"#module-django.core.files.storage\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"getting-the-default-storage-class\">\n<h2>获取默认的存储类：<a class=\"heading-anchor\" href=\"#getting-the-default-storage-class\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Django 提供了便捷的方式来访问默认的存储类：</p>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.storages\">\n<span class=\"sig-name descname\"><span class=\"pre\">storages</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.storages\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>一个类似字典的对象，允许使用 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-STORAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STORAGES</span></code></a> 中定义的别名检索存储实例。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">storages</span></code> 有一个属性 <code class=\"docutils literal notranslate\"><span class=\"pre\">backends</span></code>，它默认为 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-STORAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STORAGES</span></code></a> 中提供的原始值。</p>\n<p>此外，<code class=\"docutils literal notranslate\"><span class=\"pre\">storages</span></code> 提供了一个 <code class=\"docutils literal notranslate\"><span class=\"pre\">create_storage()</span></code> 方法，它接受 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-STORAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STORAGES</span></code></a> 中用于后端的字典，并返回基于该后端定义的存储实例。这对于需要在测试中实例化存储的第三方包可能很有用：</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.files.storage</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">storages</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">storages</span><span class=\"o\">.</span><span class=\"n\">backends</span>\n<span class=\"go\">{&#39;default&#39;: {&#39;BACKEND&#39;: &#39;django.core.files.storage.FileSystemStorage&#39;},</span>\n<span class=\"go\"> &#39;staticfiles&#39;: {&#39;BACKEND&#39;: &#39;django.contrib.staticfiles.storage.StaticFilesStorage&#39;},</span>\n<span class=\"go\"> &#39;custom&#39;: {&#39;BACKEND&#39;: &#39;package.storage.CustomStorage&#39;}}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">storage_instance</span> <span class=\"o\">=</span> <span class=\"n\">storages</span><span class=\"o\">.</span><span class=\"n\">create_storage</span><span class=\"p\">({</span><span class=\"s2\">&quot;BACKEND&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;package.storage.CustomStorage&quot;</span><span class=\"p\">})</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.DefaultStorage\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">DefaultStorage</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.DefaultStorage\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.core.files.storage.DefaultStorage\" title=\"django.core.files.storage.DefaultStorage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DefaultStorage</span></code></a> 提供了对由 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-STORAGES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STORAGES</span></code></a> 中的 <code class=\"docutils literal notranslate\"><span class=\"pre\">default</span></code> 键定义的默认存储系统的延迟访问。<a class=\"reference internal\" href=\"#django.core.files.storage.DefaultStorage\" title=\"django.core.files.storage.DefaultStorage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DefaultStorage</span></code></a> 内部使用了 <a class=\"reference internal\" href=\"#django.core.files.storage.storages\" title=\"django.core.files.storage.storages\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">storages</span></code></a>。</p>\n</dd></dl>\n\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.default_storage\">\n<span class=\"sig-name descname\"><span class=\"pre\">default_storage</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.default_storage\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.core.files.storage.default_storage\" title=\"django.core.files.storage.default_storage\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">default_storage</span></code></a> 是 <a class=\"reference internal\" href=\"#django.core.files.storage.DefaultStorage\" title=\"django.core.files.storage.DefaultStorage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DefaultStorage</span></code></a> 的一个实例。</p>\n</dd></dl>\n\n</section>\n<section id=\"the-filesystemstorage-class\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">FileSystemStorage</span></code> 类<a class=\"heading-anchor\" href=\"#the-filesystemstorage-class\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.FileSystemStorage\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">FileSystemStorage</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">location</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">base_url</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_permissions_mode</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">directory_permissions_mode</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">allow_overwrite</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.FileSystemStorage\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.core.files.storage.FileSystemStorage\" title=\"django.core.files.storage.FileSystemStorage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">FileSystemStorage</span></code></a> 类实现了本地文件系统的基本文件存储。它继承自 <a class=\"reference internal\" href=\"#django.core.files.storage.Storage\" title=\"django.core.files.storage.Storage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Storage</span></code></a> 类，并提供了其中所有公开方法的实现。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>如果给定的文件名不存在，<code class=\"docutils literal notranslate\"><span class=\"pre\">FileSystemStorage.delete()</span></code> 方法不会引发异常。</p>\n</aside>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.FileSystemStorage.location\">\n<span class=\"sig-name descname\"><span class=\"pre\">location</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.FileSystemStorage.location\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>存放文件的目录的绝对路径。 默认为你的 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_ROOT</span></code></a> 配置的值。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.FileSystemStorage.base_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">base_url</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.FileSystemStorage.base_url\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>为存储在此位置的文件提供服务的 URL。默认为你的 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code></a> 配置的值。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.FileSystemStorage.file_permissions_mode\">\n<span class=\"sig-name descname\"><span class=\"pre\">file_permissions_mode</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.FileSystemStorage.file_permissions_mode\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>保存文件时，文件系统将获得的权限。默认为 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-FILE_UPLOAD_PERMISSIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FILE_UPLOAD_PERMISSIONS</span></code></a>。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.FileSystemStorage.directory_permissions_mode\">\n<span class=\"sig-name descname\"><span class=\"pre\">directory_permissions_mode</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.FileSystemStorage.directory_permissions_mode\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>保存目录时，该目录将获得的文件系统权限，默认为 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-FILE_UPLOAD_DIRECTORY_PERMISSIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FILE_UPLOAD_DIRECTORY_PERMISSIONS</span></code></a>。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.FileSystemStorage.allow_overwrite\">\n<span class=\"sig-name descname\"><span class=\"pre\">allow_overwrite</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.FileSystemStorage.allow_overwrite\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>控制是否允许保存新文件覆盖现有文件的标志。默认为 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.FileSystemStorage.get_created_time\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_created_time</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.FileSystemStorage.get_created_time\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回系统 ctime 的 <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>，即 <a class=\"reference external\" href=\"https://docs.python.org/3/library/os.path.html#os.path.getctime\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">os.path.getctime()</span></code></a>。在某些系统上（如 Unix），这是最后一次修改元数据的时间，而在其他系统上（如 Windows），这是文件的创建时间。</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"the-inmemorystorage-class\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">InMemoryStorage</span></code> 类<a class=\"heading-anchor\" href=\"#the-inmemorystorage-class\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.InMemoryStorage\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">InMemoryStorage</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">location</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">base_url</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_permissions_mode</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">directory_permissions_mode</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.InMemoryStorage\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.core.files.storage.InMemoryStorage\" title=\"django.core.files.storage.InMemoryStorage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">InMemoryStorage</span></code></a> 类实现了基于内存的文件存储。它没有持久性，但可以通过避免磁盘访问来加速测试。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.InMemoryStorage.location\">\n<span class=\"sig-name descname\"><span class=\"pre\">location</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.InMemoryStorage.location\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>文件分配的目录名称的绝对路径。默认值为 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_ROOT</span></code></a> 设置的值。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.InMemoryStorage.base_url\">\n<span class=\"sig-name descname\"><span class=\"pre\">base_url</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.InMemoryStorage.base_url\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>为存储在此位置的文件提供服务的 URL。默认为你的 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code></a> 配置的值。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.InMemoryStorage.file_permissions_mode\">\n<span class=\"sig-name descname\"><span class=\"pre\">file_permissions_mode</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.InMemoryStorage.file_permissions_mode\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>文件系统分配给文件的文件系统权限，为了与 <code class=\"docutils literal notranslate\"><span class=\"pre\">FileSystemStorage</span></code> 兼容而提供。默认值为 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-FILE_UPLOAD_PERMISSIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FILE_UPLOAD_PERMISSIONS</span></code></a>。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.InMemoryStorage.directory_permissions_mode\">\n<span class=\"sig-name descname\"><span class=\"pre\">directory_permissions_mode</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.InMemoryStorage.directory_permissions_mode\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>文件系统分配给目录的文件系统权限，为了与 <code class=\"docutils literal notranslate\"><span class=\"pre\">FileSystemStorage</span></code> 兼容而提供。默认值为 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-FILE_UPLOAD_DIRECTORY_PERMISSIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FILE_UPLOAD_DIRECTORY_PERMISSIONS</span></code></a>。</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"the-storage-class\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Storage</span></code> 类<a class=\"heading-anchor\" href=\"#the-storage-class\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Storage</span></span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.core.files.storage.Storage\" title=\"django.core.files.storage.Storage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Storage</span></code></a> 类为存储文件提供了一个标准化的 API，以及一组默认行为，所有其他存储系统可以根据需要继承或覆盖。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>当方法返回未处理的 <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code> 对象时，所使用的有效时区将是 <code class=\"docutils literal notranslate\"><span class=\"pre\">os.environ['TZ']</span></code> 的当前值；注意，这通常是由 Django 的 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TIME_ZONE</span></code></a> 设置的。</p>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.delete\">\n<span class=\"sig-name descname\"><span class=\"pre\">delete</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.delete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>删除 <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> 引用的文件。如果目标存储系统不支持删除，这将引发 <code class=\"docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.exists\">\n<span class=\"sig-name descname\"><span class=\"pre\">exists</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.exists\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>如果存储系统中已存在给定名称引用的文件，则返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.get_accessed_time\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_accessed_time</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.get_accessed_time\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回文件最后访问时间的 <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>。对于不能返回最后访问时间的存储系统，将引发 <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#NotImplementedError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code></a>。</p>\n<p>如果 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>，则返回一个处理过的 <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code>，否则返回一个当地时区的未处理的 <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.get_alternative_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_alternative_name</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_root</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_ext</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.get_alternative_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>根据 <code class=\"docutils literal notranslate\"><span class=\"pre\">file_root</span></code> 和 <code class=\"docutils literal notranslate\"><span class=\"pre\">file_ext</span></code> 参数返回一个替代的文件名，一个下划线加上一个随机的 7 个字符的字母数字字符串被附加到文件名的扩展名之前。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.get_available_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_available_name</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_length</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.get_available_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回一个基于 <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> 参数的文件名，该文件名在目标存储系统中是空闲的，可供新内容写入。</p>\n<p>文件名的长度不会超过 <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code>，如果提供的话。如果不能找到一个空闲的唯一文件名，将引发一个 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/exceptions/#django.core.exceptions.SuspiciousOperation\" title=\"django.core.exceptions.SuspiciousOperation\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">SuspiciousFileOperation</span></code></a> 异常。</p>\n<p>如果一个带有 <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> 的文件已经存在，则调用 <a class=\"reference internal\" href=\"/zh-hans/6.1/howto/custom-file-storage/#django.core.files.storage.get_alternative_name\" title=\"django.core.files.storage.get_alternative_name\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_alternative_name()</span></code></a> 来获得一个替代名称。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.get_created_time\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_created_time</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.get_created_time\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回文件的创建时间的 <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>。对于不能返回创建时间的存储系统，将引发 <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#NotImplementedError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code></a>。</p>\n<p>如果 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>，则返回一个处理过的 <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code>，否则返回一个当地时区的未处理的 <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.get_modified_time\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_modified_time</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.get_modified_time\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回文件最后修改时间的 <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">datetime</span></code></a>。对于不能返回最后修改时间的存储系统，将引发 <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#NotImplementedError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code></a>。</p>\n<p>如果 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span></code></a> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>，则返回一个处理过的 <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code>，否则返回一个当地时区的未处理的 <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.get_valid_name\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_valid_name</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.get_valid_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>根据 <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> 参数返回一个适合在目标存储系统中使用的文件名。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.generate_filename\">\n<span class=\"sig-name descname\"><span class=\"pre\">generate_filename</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">filename</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.generate_filename\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Validates the <code class=\"docutils literal notranslate\"><span class=\"pre\">filename</span></code> by calling <a class=\"reference internal\" href=\"/zh-hans/6.1/howto/custom-file-storage/#django.core.files.storage.get_valid_name\" title=\"django.core.files.storage.get_valid_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">get_valid_name</span></code></a> and\nreturns a filename to be passed to the <a class=\"reference internal\" href=\"#django.core.files.storage.Storage.save\" title=\"django.core.files.storage.Storage.save\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">save()</span></code></a> method.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">filename</span></code> argument may include a path as returned by\n<a class=\"reference internal\" href=\"/zh-hans/6.1/ref/models/fields/#django.db.models.FileField.upload_to\" title=\"django.db.models.FileField.upload_to\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">FileField.upload_to</span></code></a>.\nIn that case, the path won't be passed to <a class=\"reference internal\" href=\"/zh-hans/6.1/howto/custom-file-storage/#django.core.files.storage.get_valid_name\" title=\"django.core.files.storage.get_valid_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">get_valid_name</span></code></a> but\nwill be prepended back to the resulting name.</p>\n<p>默认实现使用 <a class=\"reference external\" href=\"https://docs.python.org/3/library/os.path.html#module-os.path\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">os.path</span></code></a> 操作。如果不适合你的存储，请重写这个方法。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.listdir\">\n<span class=\"sig-name descname\"><span class=\"pre\">listdir</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">path</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.listdir\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>列出指定路径的内容，返回一个二元元组列表，第一项是目录，第二项是文件。对于不能提供这种列表的存储系统，这将引发一个 <code class=\"docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.open\">\n<span class=\"sig-name descname\"><span class=\"pre\">open</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">mode</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'rb'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.open\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>打开由 <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> 给出的文件。请注意，虽然返回的文件保证是一个 <code class=\"docutils literal notranslate\"><span class=\"pre\">File</span></code> 对象，但实际上它可能是某个子类。在远程文件存储的情况下，这意味着读／写可能会很慢，所以要注意。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.path\">\n<span class=\"sig-name descname\"><span class=\"pre\">path</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>本地文件系统路径，在这里可以使用 Python 的标准 <code class=\"docutils literal notranslate\"><span class=\"pre\">open()</span></code> 打开文件。对于不能从本地文件系统访问的存储系统，这将引发 <code class=\"docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.save\">\n<span class=\"sig-name descname\"><span class=\"pre\">save</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">content</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_length</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.save\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>使用存储系统保存一个新的文件，最好使用指定的名称。如果已经存在一个带有这个名字 <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> 的文件，存储系统可以根据需要修改文件名以获得一个唯一的名字。将返回存储文件的实际名称。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> 参数被传递给 <a class=\"reference internal\" href=\"/zh-hans/6.1/howto/custom-file-storage/#django.core.files.storage.get_available_name\" title=\"django.core.files.storage.get_available_name\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_available_name()</span></code></a>。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">content</span></code> 参数必须是 <a class=\"reference internal\" href=\"/zh-hans/6.1/ref/files/file/#django.core.files.File\" title=\"django.core.files.File\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.core.files.File</span></code></a> 的实例，或者是一个可以用 <code class=\"docutils literal notranslate\"><span class=\"pre\">File</span></code> 包装的类文件对象。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.size\">\n<span class=\"sig-name descname\"><span class=\"pre\">size</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.size\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> 引用的文件的总大小，以字节为单位。对于不能返回文件大小的存储系统，将引发 <code class=\"docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.core.files.storage.Storage.url\">\n<span class=\"sig-name descname\"><span class=\"pre\">url</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.core.files.storage.Storage.url\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回可以访问 <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> 引用的文件内容的URL。对于不支持通过 URL 访问的存储系统，这将引发 <code class=\"docutils literal notranslate\"><span class=\"pre\">NotImplementedError</span></code>。</p>\n</dd></dl>\n\n</dd></dl>\n\n<aside class=\"admonition-there-are-community-maintained-solutions-too admonition\">\n<p class=\"admonition-title\">There are community-maintained solutions too!</p>\n<p>Django has a vibrant ecosystem. There are storage backends\nhighlighted on the <a class=\"reference external\" href=\"https://www.djangoproject.com/community/ecosystem/#storage-and-static-files\">Community Ecosystem</a> page. The Django Packages\n<a class=\"reference external\" href=\"https://djangopackages.org/grids/g/storage-backends/\">Storage Backends grid</a> has even more options for you!</p>\n</aside>\n</section>","rootId":"module-django.core.files.storage","toc":[{"title":"获取默认的存储类：","anchor":"getting-the-default-storage-class","children":[]},{"title":"FileSystemStorage 类","anchor":"the-filesystemstorage-class","children":[]},{"title":"InMemoryStorage 类","anchor":"the-inmemorystorage-class","children":[]},{"title":"Storage 类","anchor":"the-storage-class","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API 参考","url":"/zh-hans/6.1/ref/"},{"docname":"ref/files/index","title":"文件处理","url":"/zh-hans/6.1/ref/files/"}],"prev":{"docname":"ref/files/file","title":"File 对象","url":"/zh-hans/6.1/ref/files/file/"},"next":{"docname":"ref/files/uploads","title":"上传的文件和上传处理程序","url":"/zh-hans/6.1/ref/files/uploads/"},"formats":{"html":"/zh-hans/6.1/ref/files/storage/","markdown":"/zh-hans/6.1/ref/files/storage.md","json":"/zh-hans/6.1/ref/files/storage.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/ref/files/storage.txt","official":"https://docs.djangoproject.com/zh-hans/6.1/ref/files/storage/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}