内容详情 您现在的位置是: 首页> Python

python搭建django的web项目中 html上传文件

发布时间:2020-12-05 19:30 已围观:3002

摘要python搭建django的web项目中 html上传文件

python项目django web html上传文件

一.html文件(文件名为upfile.html)

<html>
<head>
   <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
  <title>python</title>
</head>
<body>
 <form method="POST" action="/uploadfile/" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="提交" />
</form>
 <p> {{title}}</p>
</body>
</html>
说明:
1、表单中enctype="multipart/form-data"的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据,进行下面的操作.
2、method="post"文件上传的方式必须为POST方式
3、type="file"类型为文件域

二、、在myApp/url.py中添加配置url

urlpatterns = [
...,
url('upfile/', views.upfile),
url('uploadfile/', views.uploadfile),
]

三、在myApp/views.py文件中定义视图

def uploadfile(request):
   if request.method == 'POST':
       f = request.FILES['file']#upfile的html文件中命名的名字
       #合成文件在服务器端存储的路径
       filePath = os.path.join(settings.MEDIA_ROOT, f.name)
       with open(filePath, 'wb') as fp:
           for info in f.chunks():#因为文件f的大小并不确定,所以要调用f.chunks()的方法来以文件流的方式一段一段的接收
               fp.write(info)
       #读取文件内容
       with open(filePath, "r") as fff:  # 打开文件
           data = fff.read()  # 读取文件
       
       context         = {}
       context['title'] = ''
       context['image'] = ''
       context['show'] = 'none'
       context['textarea'] = data
       return render(request, 'myform.html', context)
   else:
       context         = {}
       context['title'] = ''
       context['image'] = ''
       context['show'] = 'none'
       context['textarea'] = 'error'
       return render(request, 'myform.html', context)
       
def upfile(request):
   context         = {}
   context['title'] = 'upfile Test '
   return render(request, 'formupload.html', context)

感谢大佬文章 https://blog.csdn.net/weixin_44387495/article/details/95589379


声明:本文内容摘自网络,版权归原作者所有。如有侵权,请联系处理,谢谢~
转发:https://blog.csdn.net/weixin_44387495/article/details/95589379

赞一个 (7)