java中的接口是类吗
258
2022-08-31
Django(part47)--文件上传(django 上传下载文件)
学习笔记,仅供参考
文件上传
上传须知
文件上传必须为POST提交方式,在文件上传时,表单
举个例子
现在,在这个例子中,我想实现文件的上传。
现在,我们在mywebsite_bookstore项目下的模板文件夹templates下创建一个upload.html文件:
在主视图模块views.py中添加一个视图函数:
def on_upload(request): if request.method == "GET": return render(request, "upload.html") elif request.method == "POST": file = request.FILES['myfile'] html = "上传的文件为:{}
文件名为{}".format(file, file.name) return HttpResponse(html)
注意,我们获取的file对象不在我的磁盘上,而在内存中。
在主urls.py模块中添加一个路由:
from django.urls import re_pathfrom django.contrib import adminfrom django.conf.urls import includefrom . import viewsurlpatterns = [ re_path(r'^admin/', admin.site.urls), re_path(r'^upload/$',views.on_upload),]
现在,我们向on_upload(request): if request.method == "GET": return render(request, "upload.html") elif request.method == "POST": file = request.FILES['myfile'] html = "上传的文件为:{}
文件名为{}".format(file, file.name) with open(r"F:\MyStudio\PythonStudio\goatbishop.project01\Django\mywebsite_bookstore\static\image\\" + file.name, 'wb') as f: b = file.file.read() #读取缓存文件的内容 f.write(b) return HttpResponse(html)
注意,这里的文件保存路径为绝对路径。我们也可以通过BASE_DIR来写保存文件的绝对路径(BASE_DIR会告诉我们项目所在的绝对路径)。
要做这件事,我们就需要在settings.py中自定义一个文件保存路径:
#自定义变量UPLOAD_DIR用于绑定上传文件的保存路径UPLOAD_DIR = os.path.join(BASE_DIR, 'static/image')
在主views.py中导入当前项目的配置文件settings.py,并修改视图函数on_upload:
from django.conf import settingsimport osdef on_upload(request): if request.method == "GET": return render(request, "upload.html") elif request.method == "POST": file = request.FILES['myfile'] html = "上传的文件为:{}
文件名为{}".format(file, file.name) with open(os.path.join(settings.UPLOAD_DIR, file.name), 'wb') as f: b = file.file.read() f.write(b) return HttpResponse(html)
一般情况下,我们的数据库中不会保存文件本身,而只保存文件的一些信息(比如文件名和文件保存路径)。
我们向Well !
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~