Django之上传文件
作者:互联网
1 urls.py中
url(r'^upload/', views.upload),
2 views.py中
from django.shortcuts import render from django.views.decorators.csrf import csrf_exempt # Create your views here. @csrf_exempt def upload(request): """ 保存上传文件前,数据需要存放在某个位置。默认当上传文件小于2.5M时,django会将上传文件的全部内容读进内存。从内存读取一次,写磁盘一次。 但当上传文件很大时,django会把上传文件写到临时文件中,然后存放到系统临时文件夹中。 :param request: :return: """ if request.method == "POST": file_obj = request.FILES.get("file") # 拿到文件对象,file为页面上type=files类型input的name属性值 print(file_obj,type(file_obj)) # picture.png <class 'django.core.files.uploadedfile.InMemoryUploadedFile'> # django把上传的文件放到内存中,我们要做的事情就是把文件写到磁盘上 # 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 # file_obj.name表示已文件原来的名字命名文件 with open(file_obj.name, "wb") as f: #从文件中一行一行的读取数据 for line in file_obj.chunks(): # 写入本地文件 f.write(line) return render(request, "upload.html")
3 upload.html中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/upload/" method="post" enctype="multipart/form-data"> <p><input type="file" name="file"></p> <p><input type="submit" value="提交"></p> </form> </body> </html> <!-- form表单提交数据需要注意的事项 --> <!-- 1 提交方式type="submit" --> <!-- 2 所有的input标签要放到form表单里面,input标签要有name --> <!-- 3 提交文件时需要设定form的enctype=“multipart/form-data”,并且添加<input type='file'>,而且附件只能通过submit方法进行提交 -->
标签:文件,obj,之上,request,upload,Django,file,django 来源: https://www.cnblogs.com/zh-xiaoyuan/p/12823767.html