django 前端上传图片,后端接受并存储到图片文件夹
时间: 2023-08-23 14:05:53 浏览: 160
首先,需要在前端创建一个表单,用于上传图片。
```html
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="image">
<button type="submit">上传图片</button>
</form>
```
然后,在后端的视图函数中,可以通过 `request.FILES` 获取上传的文件对象,并使用 `FileSystemStorage` 存储到指定的文件夹中。
```python
from django.shortcuts import render
from django.core.files.storage import FileSystemStorage
def upload(request):
if request.method == 'POST':
uploaded_file = request.FILES['image']
fs = FileSystemStorage()
filename = fs.save(uploaded_file.name, uploaded_file)
return render(request, 'upload.html', {'filename': filename})
return render(request, 'upload.html')
```
在上面的代码中,`request.FILES` 是一个 `django.core.files.uploadedfile.InMemoryUploadedFile` 或 `django.core.files.uploadedfile.TemporaryUploadedFile` 对象的字典,可以通过 `name` 属性获取上传的文件名,通过 `read()` 方法读取文件内容。
`FileSystemStorage` 是 Django 提供的一个文件系统存储类,可以将文件存储到本地文件系统中。在默认情况下,存储位置是 `MEDIA_ROOT` 设置的文件夹,可以在 `settings.py` 中进行配置。例如:
```python
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
```
最后,需要在模板中显示上传的图片,可以使用 `MEDIA_URL` 和 `filename` 拼接出图片的 URL,然后在 `<img>` 标签中展示。
```html
{% if filename %}
<img src="{{ MEDIA_URL }}{{ filename }}" alt="上传的图片">
{% endif %}
```
阅读全文