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发布模块的步骤分享
Feb 21 Python
浅析Python中的多重继承
Apr 28 Python
python制作websocket服务器实例分享
Nov 20 Python
浅谈python日志的配置文件路径问题
Apr 28 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
Jun 06 Python
python 快速把超大txt文件转存为csv的实例
Oct 26 Python
pytorch对可变长度序列的处理方法详解
Dec 08 Python
python实现替换word中的关键文字(使用通配符)
Feb 13 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
Python 里最强的地图绘制神器
Mar 01 Python
关于python pygame游戏进行声音添加的技巧
Oct 24 Python
python playwright 自动等待和断言详解
Nov 27 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
PHP正确配置mysql(apache环境)
2011/08/28 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
Javascript的构造函数和constructor属性
2010/01/09 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
2020/04/16 Javascript
js实现计算器功能
2020/08/10 Javascript
详解Python中break语句的用法
2015/05/14 Python
Python中类的初始化特殊方法
2017/12/01 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
详解Python 函数如何重载?
2019/04/23 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
使用Python通过oBIX协议访问Niagara数据的示例
2020/12/04 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
挪威手表购物网站:Klokker
2016/09/19 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
大学生专科毕业生自我评价
2013/11/17 职场文书
机电一体化自荐信
2013/12/10 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
公司委托书格式范文
2014/04/04 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
文案策划岗位职责
2015/02/11 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python