• Django--Uploaded Files以及Handlers


    一、表示已经上传的文件(uploaded files)的类

    表示已经上传的文件的类有下面几个:

    class UploadedFile

    在文件上传的期间,实际的文件数据被存储在request.FILES。在这个字典中的每一项都是一个UploadedFile对象或者是子类的对象。这是一个对已经上传文件的简单封装,你可以通过以下方法进行访问上传的内容。

    方法:

            read()

            从该文件中读取整块上传的数据,使用这个方法必须小心,如果该上传的文件特别大,它将使得你的系统崩溃,相反你可以使用chunks()方法来一小块小块的读取到内存中。

            multiple_chunks(chunk_size=None)

            如果上传的文件足够大需要在多个块(chunks)中进行读取,将会返回True。默认情况下,这将会是任何大于2.5 MB的文件,但是这个是可以配置的。

            chunks()

            这个一个返回文件chunks的生成器。如果multiple_chunks()为True,你应该在循环中使用这个方法而不是read()。

            实际上,经常最简单的使用方法是总是使用chunks()。然后循环这个chunks()方法而不是使用read(),这样确保大文件不会过分占用你的系统内存。

    属性 :

            name

            上传过的文件的文件名

            size

            上传过的文件的文件大小

            content_type

            伴随这个上传文件的content-type头部。(例如:text/plain或者application/pdf)。与用户提供的任何数据一样,您不应该相信上传的文件实际上是这种类型的。您仍然需要验证该文件包含的内容是否是content-type头部声明的。trust but verify。

            content_type_extra

            这是一个字典,包含了额外的传入content-type的参数。这个通常是由诸如Google App Engine服务提供的,这将拦截这个文件并代表你处理这个文件。结果是你的处理器可能不会接收到上传文件的内容,相反是一个URL或者其他指向这个文件的指针。

            charset

            字符集,对于text/* content-types,这个设置(例如 utf-8)由浏览器提供。trust but verify。

    注意:

            例如常规的Python文件,你可以仅仅迭代这个上传的文件来一行一行读取这个文件。

                    for line in uploadedfile

                            do_someting_with(line)

    UploadFile的子类包括:

    class TemporaryloadedFile

            一个上传至临时文件的(i.e. stream-to-disk)位置。这个类通常被TemporaryFileUploadHandler。除了UploadedFile的方法外,还有一个额外的方法。

    方法:

            temporary_file_path()

            返回这个临时上传文件的完整路径。

    class InMemoryUploadedFile

            放入内存中上传过的文件。(i.e. stream-to-memoey)。这个类通常由MemoryFileUploadHandler使用。

    二、内建的上传处理器

            MemoryFileUploadHandler和TemporaryFileUploadHandler这个两个处理器分别提供django上传的文件默认行为,读取小文件到内存中,读取大文件到磁盘中。

    他们都位于django.core.files.uploadhandler中,前者用于小文件,该处理器流上传至内存中,后者使用TemporaryUploadFile,将数据流入一个临时的文件。

    三、自定义上传处理器

    class FileUploadHandler,自定义处理器必须是该子类,位于django.core.files.uploadedhandler.FileUploadHander。

     

     

             

     

     

  • 相关阅读:
    教你三招打入App Store推荐目录!
    APP下载量低 如何显著提高APP下载量?
    导致APP排名下跌的主要因素
    如何提高APP关键词覆盖率?先熟悉套路!
    如何让你的ASO优化效果提升10倍?
    有效的移动应用推广策略
    APP运营推广不得不看的6种数据指标
    如何为你的APP选出“最好”的关键词
    手机应用开发宝典:如何养成一款畅销APP
    Linux下设置定期执行脚本
  • 原文地址:https://www.cnblogs.com/baishoujing/p/7209886.html
Copyright © 2020-2023  润新知