<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<form method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file">
<input type="submit" value="submit">
form>
body>
html>
传文件一定要指定 form标签的属性enctype为 multipart/form-data
先设置接收文件的路径
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
模型字段可以选择ImageField或者FileField,模型字段参数upload_to为上传路径
例如 **%Y/%m/%d/**将会自动存放到 **/media/年/月/日/**文件夹下
from django.db import models
# Create your models here.
class MyFile(models.Model):
image = models.ImageField(upload_to='%Y/%m/%d/')
通过**request.FILES.get(‘表单字段名’)**获取文件对象,表单字段名必须跟html的input标签属性name一致,否则会获取不到文件对象
from django.shortcuts import render
from .models import MyFile
# Create your views here.
def testUpload(request):
if request.method == 'GET':
return render(request, 'fileUpload_demo/upload.html')
elif request.method == 'POST':
print type(request.FILES.get('file'))
file_ = MyFile(image=request.FILES.get('file'))
file_.save()
return render(request, 'fileUpload_demo/upload.html')
到第三步,已经可以使用页面上传文件了,如果希望浏览器直接访问文件,可以在urls.py设置访问路径
from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static
urlpatterns = [
......
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
加上最后一步可以在浏览器直接访问文件
大家有问题可以微信交流一下~~