python实现上传下载文件功能


Posted in Python onNovember 19, 2020

最近刚学python,遇到上传下载文件功能需求,记录下!

django web项目,前端上传控件用的是uploadify。

文件上传 - 后台view 的 Python代码如下:

@csrf_exempt
@require_http_methods(["POST"])
def uploadFiles(request):
 try:
 user = request.session.get('user')
 allFimeNames = ""
 #获取所有上传文件
 files = request.FILES.getlist("file")
 for file in files:
  # 获取文件名 解析文件后缀 获取新文件名
  oldName = file.name
  filename = str(int(time.time() * 10))+"."+oldName.split(".")[1]
  now = datetime.now()
  filePath = os.path.join("developmentTask",str(user.get("userId"))+"-"+now.strftime('%Y-%m-%d'))
  dirpath = os.path.join(settings.UPLOADFILES_DIRS , filePath)
  #写入服务器
  if not os.path.exists(dirpath):
  os.makedirs(dirpath)
  newFilePath = os.path.join(dirpath, filename)
  with open(newFilePath, 'wb+') as destination:
  for chunk in file.chunks():
   destination.write(chunk)
  #返回新文件名 多个用逗号隔开
  allFimeNames = os.path.join(filePath,filename)
 except Exception:
 return JsonResponse(data={'error': "系统异常"}, status=400)
 return JsonResponse(data={'filePath': allFimeNames})

request.FILES.getlist("file")此处的file 是前端页面的文件提交的名称,可以在uploadify中配置。

文件下载:

@csrf_exempt
@require_http_methods(["GET"])
def downloadFile(request):
 filePath = request.GET.get("filepath")
 fileName = request.GET.get("filename")
 file_name = os.path.join(settings.UPLOADFILES_DIRS, filePath)
 if os.path.exists(file_name):
 def file_iterator(file_name, chunk_size=512):
  with open(file_name) as f:
  while True:
   c = f.read(chunk_size)
   if c:
   yield c
   else:
   break
 response = StreamingHttpResponse(file_iterator(file_name))
 response['Content-Type'] = 'application/octet-stream'
 response['Content-Disposition'] = 'attachment;filename="{0}"'.format(fileName)
 return response
 response = StreamingHttpResponse("文件不存在!")
 response['Content-Type'] = 'application/octet-stream'
 response['Content-Disposition'] = 'attachment;filename="{0}"'.format("")
 return response

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程编程(六):可重入锁RLock
Apr 05 Python
python装饰器与递归算法详解
Feb 18 Python
python和ruby,我选谁?
Sep 13 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
解决python 无法加载downsample模型的问题
Oct 25 Python
django-crontab 定时执行任务方法的实现
Sep 06 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
Python pandas库中的isnull()详解
Dec 26 Python
python实现取余操作的简单实例
Aug 16 Python
python 常见的排序算法实现汇总
Aug 21 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
分享几道你可能遇到的python面试题
Jul 24 #Python
python 判断是否为正小数和正整数的实例
Jul 23 #Python
python WindowsError的错误代码详解
Jul 23 #Python
python实现发送邮件功能
Jul 22 #Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 #Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 #Python
安装Python的教程-Windows
Jul 22 #Python
You might like
PHP4与PHP5的时间格式问题
2008/02/17 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
深入解析PHP的引用计数机制
2013/06/14 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
easyui messager alert 三秒后自动关闭提示的实例
2016/11/07 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
微信小程序异步处理详解
2017/11/10 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
2020/04/08 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
师范生自荐信范文
2013/10/06 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
家电创业计划书
2019/08/05 职场文书
html5 录制mp3音频支持采样率和比特率设置
2021/07/15 Javascript
Python作用域和名称空间的详细介绍
2022/04/13 Python