Django 速成笔记(5) 文件上传 多个文件上传 之三种方法
时间: 2024-02-24 13:55:18 浏览: 223
文件上传三种方式
好的,关于 Django 的文件上传,多个文件上传有三种方法:
1. 使用 Django 自带的多文件上传表单
在 HTML 表单中使用 `multiple` 属性,可以让用户选择多个文件进行上传。在 Django 视图中,使用 `request.FILES.getlist('file_field_name')` 可以获取到上传的所有文件。代码示例:
```html
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="files" multiple>
<button type="submit">上传</button>
</form>
```
```python
def upload_files(request):
if request.method == 'POST':
files = request.FILES.getlist('files')
for f in files:
# 处理上传的文件
return HttpResponse('上传成功!')
return render(request, 'upload.html')
```
2. 使用第三方库 django-formtools 提供的多文件上传表单
django-formtools 是 Django 的一个常用扩展,其中包含了一个多文件上传表单,可以方便地实现多文件上传功能。在 Django 视图中,使用 `request.FILES.getlist('file_field_name')` 可以获取到上传的所有文件。代码示例:
```python
from formtools.wizard.views import SessionWizardView
class MultiFileUploadWizard(SessionWizardView):
file_storage = FileSystemStorage(location=settings.MEDIA_ROOT)
template_name = 'upload.html'
def done(self, form_list, **kwargs):
files = self.request.FILES.getlist('files')
for f in files:
# 处理上传的文件
return HttpResponse('上传成功!')
```
3. 使用第三方库 django-multiupload 提供的多文件上传表单
django-multiupload 是一个 Django 的第三方库,它提供了一个多文件上传表单,可以方便地实现多文件上传功能。在 Django 视图中,使用 `request.FILES.getlist('file_field_name')` 可以获取到上传的所有文件。代码示例:
```python
from multiupload.fields import MultiFileField
class MultiFileUploadForm(forms.Form):
files = MultiFileField(min_num=1, max_num=10)
def upload_files(request):
if request.method == 'POST':
form = MultiFileUploadForm(request.POST, request.FILES)
if form.is_valid():
files = request.FILES.getlist('files')
for f in files:
# 处理上传的文件
return HttpResponse('上传成功!')
else:
form = MultiFileUploadForm()
return render(request, 'upload.html', {'form': form})
```
这就是 Django 的文件上传多个文件上传的三种方法。希望能够帮助到你!
阅读全文