zoukankan      html  css  js  c++  java
  • 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方法进行提交 -->
  • 相关阅读:
    最新自然语言处理(NLP)四步流程:Embed->Encode->Attend->Predict
    Word Embedding
    知乎:GAN 的发展对于研究通用人工智能有什么意义?
    2016年总结:教师路的开启,爱情味的初尝 (下)
    WinForm 窗口缩放动画效果
    关于DrawIndexedPrimitive函数的调用
    spring mvc--默认都使用了哪些bean
    杭电 HDU 1031 Design T-Shirt
    Android选择/拍照 剪裁 base64/16进制/byte上传图片+PHP接收图片
    hdoj5645DZY Loves Balls
  • 原文地址:https://www.cnblogs.com/zh-xiaoyuan/p/12823767.html
Copyright © 2011-2022 走看看