Django – 使用FileSystemStorage上传文件
Django提供了FileSystemStorage类,该类有助于在本地存储文件,以便在开发中把这些文件作为媒体提供。在这篇文章中,我们将看到如何使用FileSystemStorage API实现一个文件上传系统,将文件存储在本地。
注意:这种方法只能在开发中使用,不能在生产中使用。
如何使用FileSystemStorage上传文件?
- 第1步:我们将首先制作一个模板表格来上传文件。
Template
- 在这里,请注意输入(用户可以通过它输入一个文件)的名称是 “document”。
-
第2步:现在,我们将在
views.py
文件中编写相同的视图。
View
首先,在文件的顶部用以下方法导入FileSystemStorage类
-
在这里,FileSystemStorage类的构造函数接收参数 “location”,即您要存储文件的目录的路径。默认情况下,它是变量 “settings.MEDIA_ROOT “中的路径。它还需要一个参数’base_url’,它是你希望媒体对应的URL。默认情况下,它被设置为变量’settings.MEDIA_URL’的值(确保你在settings.py文件中设置了这些常量)。
FileSystemStorage.save函数接收3个参数:名称、内容(文件本身)和max_length(默认值=无)。
这个函数将文件–‘content’存储在’name’的名称下。如果存在一个同名的文件,那么它就对文件名进行一些修改,以产生一个独特的名字。
在django文档中阅读更多关于FileSystemStorage类的构造参数和方法。 -
第3步:定义MEDIA_ROOT和MEDIA_URL,如果尚未定义。
Settings
确保你在settings.py中配置了MEDIA_ROOT和MEDIA_URL。
- 第4步:最后,我们为MEDIA_URL添加一个路由。
URLs
在urls.py中,导入
- 并在文件的末尾添加以下内容
- 这将为MEDIA_URL添加一个路由,当用户向MEDIA_URL/(文件名)发出GET请求时,从MEDIA_ROOT提供文件。一旦完成这一切,上传的文件应该显示在MEDIA_ROOT常量中指定的目录中。
输出 –
前台看起来应该是这样的
如前所述,这种方法只能用于开发中的媒体服务,不能用于生产。你可能想在生产中使用类似nginx的东西。