一、表示已经上传的文件(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 - 白守敬 - 博客园

【Django】Uploaded Files以及Handlers相关推荐

  1. Django--Uploaded Files以及Handlers

    一.表示已经上传的文件(uploaded files)的类 表示已经上传的文件的类有下面几个: class UploadedFile 在文件上传的期间,实际的文件数据被存储在request.FILES ...

  2. Django框架 from django.core.files.uploadedfile import InMemoryUploadedFile

    2019独角兽企业重金招聘Python工程师标准>>> 作者:朱涛 链接:https://www.zhihu.com/question/23332111/answer/2423961 ...

  3. The multi-part request contained parameter data (excluding uploaded files)

    记录一次 springboot项目get请求form-data格式,请求接口出现 The multi-part request contained parameter data (excluding ...

  4. The multi-part request contained parameter data (excluding uploaded files) that exceeded the limit f

    SpringBoot上传文件报错了: The multi-part request contained parameter data (excluding uploaded files) that e ...

  5. Springboot 设置post参数大小: 解决报错The multi-part request contained parameter data (excluding uploaded files

    错误信息: 这个请求的参数超限了,servlet 默认是2M,很明显我们的参数超过了2M, 解决办法: 调整maxpostSize 的值 server.tomcat.max-http-post-siz ...

  6. Django之路——6 Django的模型层(一)

    ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...

  7. python代码函数字符查询宝典书籍_Django基础五之django模型层(一)单表操作

    二 单表操作 一.创建表 创建模型 创建名为book的app,在book下的models.py中创建模型: from django.db importmodels#Create your models ...

  8. hello~Django

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

  9. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数:request对象request.path 请求路径request.GET GET请求数据 QueryDict {}request.POST POST请求数据 QueryDic ...

  10. Django ORM 单表操作

    默认使用sqllite数据库 创建表 # models.py form django.db import models class Book(models.Model): # 表名book,djang ...

最新文章

  1. redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value
  2. html并行加载,html – 浏览器中的最大并行HTTP连接数?
  3. 信使(信息学奥赛一本通-T1376)
  4. makefile指定头文件路径_玩转Makefile | 企业项目Makefile实例
  5. 第二章 html标记语言,第二章-认识HTML标签
  6. [BZOJ1083][SCOI2005]繁忙的都市 最小生成树
  7. Mybatis 返回Map数据
  8. ffmpeg完全教程
  9. zstack信道_zigbee无线信道的组成
  10. python mysql插入数据报错:TypeError: %d format: a number is required, not str
  11. U盘量产后USB鼠标和键盘都无法使用,如何解决?
  12. css钢铁侠视角,css练习制作钢铁侠胸口的小型核反应堆
  13. CTF实验找不到ssh2john
  14. nginx配置反向代理验证ssl证书 双向认证
  15. 《Linux学习一》交叉编译工具链的构建工具Crosstool-ng
  16. 《麦肯锡方法》第四部分 麦肯锡生存之道 第14-16章-思维导图
  17. 微信公众平台搭建与开发揭秘
  18. CSS——移动端适配方案
  19. 五次面试,程序员的悲催轮回
  20. vue项目JS播放音频音效和背景音乐

热门文章

  1. 爬虫手册01 XPath的使用
  2. 基于一致性算法的需求侧分布式能源交易
  3. 基于YOLO-fastest-xl的OCR
  4. GNU C/C++中的内存模型与原子操作
  5. android ContextMenu 上下文菜单示例
  6. 职场小白浅谈网络优化
  7. windows效率软件不完全指南
  8. 远丰电商|经销商如何做B2B电商转型?
  9. web设计中常见浏览器兼容问题的解决办法
  10. 使用YUV颜色空间将CMSampleBufferRef转换为UIImage