一、表示已经上传的文件(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. MarkDown编辑器快捷方式

    常用快捷: Ctrl+K 插入代码块 Ctrl+G 插入图片 Ctrl+B 文字加粗 Ctrl+I 文字倾斜 Ctrl+G 插入图片 Tab 默认新建高亮代码块 ">" 向右 ...

  2. Java IO流之缓冲流

    一.缓冲流简介 二.BufferedInputStream 三.其他三种缓冲流

  3. nodejs 开发指南 书中小项目 代码

    最近 在学习node.js 先看了下语法 ,然后就看这个开发指南感觉书还是很有用,但是代码太旧了,网上也没有最新的,所以就自己查着前人的痕迹和自己修改,现在可以跑了. https://github.c ...

  4. Vue单文件组件基础模板

    背景 相信大家在使用Vue开发项目时,基本都是以单文件组件的形式开发组件的,这种方式好处多多: 1.代码集中,便于开发.管理和维护 2.可复用性高,直接将vue文件拷贝到新项目中 我暂时就想到这两点, ...

  5. 基于SSE实现的极速的矩形核腐蚀和膨胀(最大值和最小值)算法。

    因未测试其他作者的算法时间和效率,本文不敢自称是最快的,但是速度也可以肯定说是相当快的,在一台I5机器上占用单核的资源处理 3000 * 2000的灰度数据用时约 20ms,并且算法和核心的大小是无关 ...

  6. 学习总结------Servlet的简单理解

    1.什么是Servlet Servlet是一个Java编写的程序,在服务器端运行的(如tomcat) Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览 ...

  7. python str转dict

    两种方法 捷径 eval(str) >>> user = "{'name' : 'jim', 'sex' : 'male', 'age': 18}" >&g ...

  8. Volley源码分析一

    Volley源码分析 虽然在2017年,volley已经是一个逐渐被淘汰的框架,但其代码短小精悍,网络架构设计巧妙,还是有很多值得学习的地方. 第一篇文章,分析了请求队列的代码,请求队列也是我们使用V ...

  9. webpack3新特性介绍

    6月20号webpack推出了3.0版本,官方也发布了公告.根据公告介绍,webpack团队将未来版本的改动聚焦在社区提出的功能需求,同时将保持一个快速.稳定的发布节奏.本文主要依据公告内容,简单介绍 ...

  10. 实现Ant Design 自定义表单组件

    Ant Design 组件提供了Input,InputNumber,Radio,Select,uplod等表单组件,但实际开发中这是不能满足需求,同时我们希望可以继续使用Form提供的验证和提示等方法 ...