一、表示已经上传的文件(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。

Django--Uploaded Files以及Handlers的更多相关文章

  1. The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit for maxPostSize set on the associated connector.

    springboot 表单体积过大时报错: The multi-part request contained parameter data (excluding uploaded files) tha ...

  2. Springboot 上传报错: Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException: The multi-part request contained parameter data (excluding uploaded files) that exceede

    Failed to parse multipart servlet request; nested exception is java.lang.IllegalStateException: The ...

  3. Settings Django Static Files

    静态文件是通过django.contrib.staticfiles来管理的. 配置Django静态文件,Djang官网静态文件配置介绍.简言之,通过以下三个步骤来配置和加载静态文件: 设置静态文件别名 ...

  4. Django~static files (e.g. images, JavaScript, CSS)

    django.contrib.staticfiles settings.py django.contrib.staticfiles is included in your INSTALLED_APPS ...

  5. Django~static files

    such as images, JavaScript, or CSS https://docs.djangoproject.com/en/1.9/howto/static-files/ django. ...

  6. Python攻关之Django(一)

    课程简介: Django流程介绍 Django url Django view Django models Django template Django form Django admin (后台数据 ...

  7. python框架之django

    python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models ...

  8. Django基础之安装配置

    安装配置 一 MVC和MTV模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据库的 ...

  9. 【Django】--Models 和ORM以及admin配置

    Models 数据库的配置 1    django默认支持sqlite,mysql, oracle,postgresql数据库 <1>sqlite django默认使用sqlite的数据库 ...

随机推荐

  1. 在eclipse中输入.后提示解决

    1.调用系统自带的提示: 如果在eclipse中输入.后没有提示对应对象的属性和方法帮助列表,可以进行以下设置就可以了 eclipse -> Window-> Preferences-&g ...

  2. 在附件管理模块中增加对FTP 上传和预览的支持

    在之前介绍的附件管理模块里面<Winform开发框架之通用附件管理模块>以及<Winform开发框架之附件管理应用>,介绍了附件的管理功能,通过对数据库记录的处理和文件的管理, ...

  3. pc网页到移动端怎么自动加载适应移动端的css。

    1.通过link标签判断加入 以前听说过在link标签中加media = "handheld",但这个用到安卓或苹果都不管用,后来尝试以下方法,是管用的. <link hre ...

  4. python3 简单实现从csv文件中读取内容,并对内容进行分类统计

    新手python刚刚上路,在实际工作中遇到如题所示的问题,尝试使用python3简单实现如下,欢迎高手前来优化import csv #打开文件,用with打开可以不用去特意关闭file了,python ...

  5. 如何实现windows命令提示符的tab补全

    1:使用win+r打开 运行 控制台 2:输入 regedit 打开注册表 3:进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\Co ...

  6. (转)C++——std::string类的引用计数

    1.概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功课,于是你把自己关在房间里 ...

  7. robot framework环境搭建

    来源:http://www.cnblogs.com/puresoul/p/3854963.html[转] 一. robot framework环境搭建: 官网:http://robotframewor ...

  8. DllImport 自动选择x64或x86 dll

    前言 标题不知道怎么确切地命名,在.net的托管世界里,有时不得不使用c的某个动态库,比如ocr.opencv等,如果幸运,有前人已经包装出.net版本,但有些不非常流行的库,只能自己使用pinvok ...

  9. 动态读取文件持续显示在UI上

    private void DisplayLogInfo(FileInfo _LastFile) { if (_LastFile != null) { StreamReader sr = null; t ...

  10. 解决Yii2邮件发送问题(结果返回成功,但接收不到邮件)

    刚刚用了一下yii邮件发送功能,虽然结果返回成功,但接收不到邮件.配置文件代码如下: 'components' => [ 'db' => [ 'class' => 'yii\db\C ...