Django 文件导入实现方案
Django文件导入实现方案
by:授客 QQ:1033553122
开发环境
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 文件导入实现方案的更多相关文章
- 大型SQL文件导入mysql方案
一. 场景 现有俩个体积较大的单表sql文件,一个为8G,一个为4G,要在一天内完整导入到阿里云的mysql中,需要同时蛮子时间和空间这俩种要求. 二. 思路 搜索了网上一堆的方案,总结了如下几个: ...
- django后台导入excel文件
1.django 如何从后台上传excel中批量解析数据 要从django后台导入的excel中批量解析数据,举一个例子,我们向后抬批量导入svn历史数据数据格式 假设excel表中有4列,每列分别是 ...
- django css文件导入,模板继承
今天写了一下模板继承 刚开始感觉还行,也挺简单的 当只有html的时候还是能继承到的,代码如下.首先在父html文件里加入 {% block content %} {% block extracss ...
- 数据库MySQL基本介绍安装使用及文件导入导出
1.数据库(data base) 1.1 简述 把文件存储在一台电脑上(服务器),其他电脑用户可以通过账号密码登陆,通过网络去访问这台电脑上的文件,但是由于每个人的数据是不同的,所以你只能通过自己的账 ...
- django文件上传、图片验证码、抽屉数据库设计
1.Django文件上传之Form方式 settings.py, ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'django.contrib.admin', 'd ...
- Django-静态文件导入/url命名及反向解析
一.静态文件导入 js.css.img等都叫做静态文件,那么关于django中静态文件的配置,我们就需要在settings配置文件里面写上这写内容: # STATIC_URL = '/xxx/' #别 ...
- Django文件上传下载与富文本编辑框
django文件上传下载 上传 配置settings.py # 设定文件的访问路径,如:访问http://127.0.0.1:8000/media/就可以获取文件 MEDIA_URL = '/medi ...
- 十万级百万级数据量的Excel文件导入并写入数据库
一.需求分析 最近接到一个需求,导入十万级,甚至可能百万数据量的记录了车辆黑名单的Excel文件,借此机会分析下编码过程; 首先将这个需求拆解,发现有三个比较复杂的问题: 问题一:Excel文件导入后 ...
- Django文件夹
Django文件 App文件夹 migrations文件 生成models创建表的翻译语句 telemplatetags文件夹 telemplatetags文件夹下的文件专门用来创建自定义标签.自定义 ...
- 图解JanusGraph系列 - 关于JanusGraph图数据批量快速导入的方案和想法(bulk load data)
大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录 源码分析相关可查看github(码文不易,求个sta ...
随机推荐
- .NET集成DeveloperSharp实现http网络请求&与其它工具的比较
爆了,爆了,DeveloperSharp系列近期又被制造业ERP.民航飞行App.建筑BIM.电力掌上营业厅.等多家大型采用,站在巨人的肩膀上你能走的更远. 支持.Net Core2.0及以上,支持. ...
- CH57x/CH58x/CH59x获取从机广播信息
有时需要通过主机设备(MCU非手机)获取从设备的广播信息例如广播包,MAC地址,扫描应答包等 以下的程序片段及功能实现是在WCH的CH59X的observer例程上实现的: 1.获取广播包 所有的函数 ...
- 第一个java的应用程序
编写java第一个程序 class HelloWorld { public static void main(String[] args){ System.out.print("Hello ...
- OpenTelemetry Logging 思维导图,收藏
Log 是最常用.最自然的监控数据类型之一,具有以下的优点: 日志的内容比指标更加丰富,可以提供更多的细节信息,帮助开发人员和运维人员更好地理解应用程序的运行状况,通过日志几乎可以重现.还原系统的完整 ...
- 知名火锅连锁企业,IT 团队如何在数千家门店中先于用户发现故障
该知名火锅连锁企业是中国领先的餐饮企业,上千家门店遍布全球,由于门店餐饮行业的特殊性,需要靠前部署服务,所以在每家餐厅中,会部署相应的服务器,及相应 IT 设备,本地会运行POS.会员.下单等业务.公 ...
- Mysql联合索引生效、失效条件
引言 联合索引又叫复合索引.两个或更多个列上的索引被称作复合索引. 对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key inde ...
- Asp.net core Swashbuckle Swagger 的常用配置
背景 .net core Swashbuckle Swagger 官方文档:https://github.com/domaindrivendev/Swashbuckle.AspNetCore 我们发现 ...
- Linux设备模型:4、sysfs
作者:wowo 发布于:2014-3-14 18:31 分类:统一设备模型 http://www.wowotech.net/device_model/dm_sysfs.html 前言 sysfs是一个 ...
- QT学习:02 界面布局管理
--- title: framework-cpp-qt-02-界面布局管理 EntryName: framework-cpp-qt-02-ui-layout-manage date: 2020-04- ...
- 基于OMAPL138+FPGA核心板——MCSDK开发入门(下)
本文测试板卡为创龙科技 SOM-TL138F 是一款基于 TI OMAP-L138(定点/浮点 DSP C674x + ARM9)+ 紫光同创 Logos/Xilinx Spartan-6 低功耗 F ...