Skip to content

biohub.core.files

hsfzxjy edited this page Jul 27, 2017 · 1 revision

概述

此模块用于处理用户上传的文件。

用户上传的文件可分为三类:

  • 永久储存在磁盘上并需要记录在数据库中的文件(例如实验文件,需要作为某些表的外键)
  • 永久储存在磁盘上但不记录在数据库中的文件(如帖子的图片,只需用 URL 访问它)
  • 临时文件,用后自动删除(如用户上传给 ABACUS 的输入文件)

此模块封装了这三类文件的接收、存储功能。

models.File

用于记录需要入库文件的表。

字段:

  • file:FileField,与记录相关联的文件
  • mime_type: CharField,文件的 MIME 类型

models.utils

store_file(file_like_object)

传入一个类文件对象,将内容转存至文件系统,返回一个二元组 (file_path, mime_type)。其中 file_path 是相对于 settings.MEDIA_ROOT 的相对路径。

store_temp_file(file_like_object)

传入一个类文件对象,将内容转存至临时目录,并返回临时文件对象(一个类文件对象)。该对象一旦被关闭(.close()),临时文件即被删除。

models.handlers

handle_permanent_file(request, field_name='file')

request.FILES[field_name] 中的文件转存至文件系统和数据库中,返回一个 models.File 实例。

handle_temporary_file(request, field_name='file')

request.FILES[field_name] 中的文件转存至临时目录中,返回一个临时文件对象。