views.py
# 上传文件 def upload(request): if request.method == "POST": file_obj = request.FILES.get("file") with open(file_obj.name, "wb") as f: # chunks() 一点一点的上传文件 for chunk in file_obj.chunks(): f.write(chunk) return render(request, "upload.html")
模板
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>上传文件</title> </head> <body> <form action="/upload/" method="post" enctype="multipart/form-data"> {% csrf_token %} <p> <input type="file" name="file"> </p> <p> <input type="submit" value="上传"> </p> </form> </body> </html>
总结:
1、form表单
上传文件,一定要有
enctype="multipart/form-data"
2、视图
获取文件对象
file_obj = request.FILES.get("file")
获取文件名称
file_obj.name
内置的chunks()方法,按块上传文件
for chunk in file_obj.chunks():
f.write(chunk)
利用AJAX上传文件
需要用到FormData储存数据
并且要加
processData: false, contentType: false,