📅  最后修改于: 2023-12-03 15:14:43.599000             🧑  作者: Mango
在 Django 中,使用 FileSystemStorage 实现文件上传功能,该类默认会将用户上传的文件保存在 MEDIA_ROOT
目录下。
首先,需要在 settings.py
文件中配置 MEDIA_ROOT
和 MEDIA_URL
:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
然后在项目的 urls.py
文件中添加以下代码:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ...
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这将会启用 Django 的调试工具,在调试时,能够直接从网页中访问该目录下的文件。
使用 FileSystemStorage 可以轻松实现文件上传功能,首先需要在 views.py
文件中导入 FileSystemStorage
类:
from django.core.files.storage import FileSystemStorage
然后在 views.py
文件中编写文件上传的逻辑代码:
def upload(request):
if request.method == 'POST' and request.FILES['file']:
file = request.FILES['file']
fs = FileSystemStorage()
fs.save(file.name, file)
return HttpResponse('上传成功!')
return render(request, 'upload.html')
这段代码中,我们首先检查请求的方法是否为 POST
,并且检查是否有文件上传。然后创建了一个 FileSystemStorage
实例,并使用 save
方法将文件保存在 MEDIA_ROOT
目录下。
最后,我们需要编写对应的 HTML 模板文件 upload.html
,其中包含了一个表单,用来上传文件:
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" id="file"><br>
<input type="submit" value="上传">
</form>
使用 Django 的 FileSystemStorage 可以轻松实现文件上传功能,通过配置 MEDIA_ROOT
和 MEDIA_URL
可以控制文件保存目录和访问路径。同时,要注意在视图函数中使用 request.FILES
,获取上传的文件对象并保存。