django 上传文件夹到项目文件夹下
时间: 2023-07-09 12:21:26 浏览: 92
在 Django 中,上传文件夹需要进行以下步骤:
1. 定义一个文件上传表单
在 HTML 表单中添加 enctype="multipart/form-data" 属性,以便支持文件上传。
```html
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="myfolder" webkitdirectory directory multiple>
<button type="submit">上传</button>
</form>
```
注意:需要将 input 标签的属性设置为 webkitdirectory directory multiple,以支持上传文件夹。
2. 在视图函数中处理文件上传
在视图函数中获取上传的文件夹,并将其保存到项目文件夹下。可以使用 Python 的 os 模块来处理文件夹的创建和文件的复制。
```python
import os
def upload(request):
if request.method == 'POST' and request.FILES['myfolder']:
myfolder = request.FILES['myfolder']
folder_path = os.path.join('media', myfolder.name)
os.makedirs(folder_path, exist_ok=True)
for file in myfolder:
file_path = os.path.join(folder_path, file.name)
with open(file_path, 'wb+') as destination:
for chunk in file.chunks():
destination.write(chunk)
return render(request, 'upload.html')
return render(request, 'upload.html')
```
3. 显示上传后的文件夹
在上传文件夹成功后,可以将其显示给用户。可以在模板中使用上传文件夹的路径。
```html
{% if folder_path %}
<p>上传成功!</p>
<p>文件夹位置: {{ folder_path }}</p>
{% endif %}
```
注意:需要在 settings.py 文件中设置 MEDIA_ROOT 和 MEDIA_URL,以便访问上传的文件夹。
```python
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
```
阅读全文