zoukankan      html  css  js  c++  java
  • form表单上传文件

    form表单上传文件

    views

    def up(request):
        return render(request,"up.html")
    

    html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="" method="post">
        <input type="text" name="username">
        <input type="file" name="mufile">
        <input type="submit" name="mufile">
    </form>
    </body>
    </html>
    

    这时候随便选择一个文件发送,结果当然是不成功的。

    错误信息

    CSRF verification failed. Request aborted.
    "CSRF验证失败。请求中止。"
    

    不能发,现在要朝着后端发送post,还是要去把中间件给注释掉,然后再点提交就没问题了,那么后端如何获取post请求的数据, 在request.post里面,这时候还只是拿来了一个字符串,拿不到数据,只是拿到了文件的名字.

    form表单上传文件注意事项

    1、一定要是post

    2、enctype默认是传不了文件的,要把它改成form-data,才能传文件

    <form action="" method="post" enctype="multipart/form-data">
    

    然后在传,发现这次连字符串都没有了。

    原来内部有个机制,文件不会放在post里面去,因为文件不是一个简单的数据,简单的数据,像普通的字符串什么的,回放在post里面,而复杂的数据会帮你塞到另外一个地方去,就是 request.FILES里面。然后获取文件对象

    file_obj = request.FILES.get('传文件的那个name值')
    
    print(file_obj.name)#就能打印出来文件的名字了,说明在这里面,接下来可以存了
    
    with open(file_obj.name,'wb')as f:
    
    	for line in file_obj:
    
    			f.write(line)
    

    这就存完了

  • 相关阅读:
    Python生成验证码
    Django设置
    OpenStack安装后检查流程总结
    利用src.rpm包修改源码后重新制作rpm包
    Python知识点:distutils常用子模块
    libvirt, libvirt-python, libvirtd 关系浅析
    Python知识点: os.popen
    Python知识点: __import__
    修改initrd.img里ko文件的一个小tips
    关于openstack自动化安装的一点思考
  • 原文地址:https://www.cnblogs.com/chanyuli/p/11729664.html
Copyright © 2011-2022 走看看