Django文件导入实现方案

by:授客 QQ1033553122

开发环境

 

Win 10

 

Python 3.5.4

 

Django-2.0.13.tar.gz

官方下载地址:

https://www.djangoproject.com/download/2.0.13/tarball/

vue 2.5.2

djangorestframework-3.9.4

下载地址:

https://github.com/encode/django-rest-framework

实现思路

1、 上传文件

2、 获取上传的文件,本地打开文件,解析数据,处理

view核心代码

def post(self, request, format=None):
result = {}
try:
request.upload_handlers = [TemporaryFileUploadHandler()] files = request.FILES
file = files.get('file') if not file:
result['msg'] = '上传失败,未获取到文件'
result['success'] = False
return Response(result, status.HTTP_400_BAD_REQUEST) temp_file_path = file.temporary_file_path() temp_result = {'msg':'导入成功', 'success':True, 'status_code':status.HTTP_200_OK} return Response(result, status_code)
except Exception as e:
result['msg'] = '%s' % e
result['success'] = False
return Response(result, status.HTTP_500_INTERNAL_SERVER_ERROR)

  

 

说明:

1、关于更多文件上传相关资料,参考文档“Django实现文件上传下载API.docx”

2、TemporaryUploadedFile和InMemoryUploadedFile都是UploadedFile的子类,除了拥有父类的方法之外,TemporaryUploadedFile还拥有以下方法:

TemporaryUploadedFile.temporary_file_path(),该函数返回被上传文件的全路径,可以通过该方法获取上传的文件。

InMemoryUploadedFile,则表示上传后被加载到内存的文件

内置上传处理器

MemoryFileUploadHandler和TemporaryFileUploadHandler类为django提供了默认的上传处理行为:被上传的小文件加载到内存,大文件保存到磁盘。两者位于django.core.files.uploadhandler

如上,可以在运行中更改上传处理器:可以通过修改request.upload_handlers,为每个请求重新定义上传处理器。如果想要完全替换上传处理器,你可以为upload_handlers赋值一个新的列表:

request.upload_handlers = [TemporaryFileUploadHandler()]

以此类推,如果只是想增加一个处理器,并且最优先执行该处理器,我们可以利用list的insert方法,把处理器插入列表中即可,形如request.upload_handlers.insert(index,
YourUploadHandler(request))

注意:只可以在访问request.POST或者request.FILES之前修改上传处理器,否则可能报错。

参考链接

https://docs.djangoproject.com/zh-hans/2.0/ref/files/uploads/

Django 文件导入实现方案的更多相关文章

  1. 大型SQL文件导入mysql方案

    一. 场景 现有俩个体积较大的单表sql文件,一个为8G,一个为4G,要在一天内完整导入到阿里云的mysql中,需要同时蛮子时间和空间这俩种要求. 二. 思路 搜索了网上一堆的方案,总结了如下几个: ...

  2. django后台导入excel文件

    1.django 如何从后台上传excel中批量解析数据 要从django后台导入的excel中批量解析数据,举一个例子,我们向后抬批量导入svn历史数据数据格式 假设excel表中有4列,每列分别是 ...

  3. django css文件导入,模板继承

    今天写了一下模板继承 刚开始感觉还行,也挺简单的 当只有html的时候还是能继承到的,代码如下.首先在父html文件里加入 {% block content %} {% block extracss ...

  4. 数据库MySQL基本介绍安装使用及文件导入导出

    1.数据库(data base) 1.1 简述 把文件存储在一台电脑上(服务器),其他电脑用户可以通过账号密码登陆,通过网络去访问这台电脑上的文件,但是由于每个人的数据是不同的,所以你只能通过自己的账 ...

  5. django文件上传、图片验证码、抽屉数据库设计

    1.Django文件上传之Form方式 settings.py, ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'django.contrib.admin', 'd ...

  6. Django-静态文件导入/url命名及反向解析

    一.静态文件导入 js.css.img等都叫做静态文件,那么关于django中静态文件的配置,我们就需要在settings配置文件里面写上这写内容: # STATIC_URL = '/xxx/' #别 ...

  7. Django文件上传下载与富文本编辑框

    django文件上传下载 上传 配置settings.py # 设定文件的访问路径,如:访问http://127.0.0.1:8000/media/就可以获取文件 MEDIA_URL = '/medi ...

  8. 十万级百万级数据量的Excel文件导入并写入数据库

    一.需求分析 最近接到一个需求,导入十万级,甚至可能百万数据量的记录了车辆黑名单的Excel文件,借此机会分析下编码过程; 首先将这个需求拆解,发现有三个比较复杂的问题: 问题一:Excel文件导入后 ...

  9. Django文件夹

    Django文件 App文件夹 migrations文件 生成models创建表的翻译语句 telemplatetags文件夹 telemplatetags文件夹下的文件专门用来创建自定义标签.自定义 ...

  10. 图解JanusGraph系列 - 关于JanusGraph图数据批量快速导入的方案和想法(bulk load data)

    大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录 源码分析相关可查看github(码文不易,求个sta ...

随机推荐

  1. 最好的在线PDF转换工具服务

    工作中有时候会碰到需要转换PDF文件的情况,现在网上就要很多免费的在线工具,可以进行PDF文件的转换,下面就来介绍一些可以直接在浏览器中将文档.电子表格.和图片转换为PDF或者互相转换的服务工具. ​ ...

  2. 面试官:说一说如何优雅的关闭线程池,我:shutdownNow,面试官:粗鲁!

    写在开头 面试官:"小伙子,线程池使用过吗,来聊一聊它吧!" 我:"好的,然后巴拉巴拉一顿输出之前看过的build哥线程池十八问..." 面试官满意的点了点头, ...

  3. js浮点数类型

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  4. CSP-S2019 题解

    做了这套题,如果是让现在的我当时去考的话应该一共可以有 450 分,格雷码,括号树,树的重心都可以做,树上的数可以有 10 分,Emiya 至少可以有 76 分, 划分也可以有 64 分.看 OIer ...

  5. [ROI 2018] Innophone 题解

    [ROI 2018] Innophone 看了半天网上仅有的一篇题解--才堪堪写出来 不过在LOJ上看提交,全是 KTT,看得我瑟瑟发抖(不会 题意翻译 在平面上有一些点,你需要在这个平面上任意确定一 ...

  6. mysql中,时间类型datetime和timestamp的区别

    TIMESTAMP和DATETIME的相同点: 两者都可用来表示 YYYY-MM-DD HH:MM:SS 类型的日期. TIMESTAMP和DATETIME的不同点: 1>  两者的存储方式不一 ...

  7. 华擎B365 BIOS 设置来电启动,来电自启,来电后开机

    开机 DEL 进入BIOS. F6 进入高级模式. 在Advanced \ Chipset Configuration ,拉到底,找到 Restore on AC/Power Loss,设置为 Pow ...

  8. bili-emoji自定义表情包设置

    使用图床上传图片.推荐使用聚合图床,简单免费 把图片的图床链接复制到一个txt文件中,如abc.txt 将abc.txt放到koishi目录的非node_modules\koishi-plugin-e ...

  9. 服务器安装mysql

    数据库连接操作 修改root的hostupdate user set host='%' where user='root' and host ="127.0.0.1"flush p ...

  10. spring项目中读取resources下的文件

    spring项目中读取resources下的文件 我们都知道,spring项目经过maven打包后,可以打成jar包或可解压的war包 a. war包是需要外置的web容器去运行的,是需要先解压的 b ...