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中用于去除空格的三个函数的使用小结
Apr 07 Python
Python中用于转换字母为小写的lower()方法使用简介
May 19 Python
django使用xlwt导出excel文件实例代码
Feb 06 Python
python实现Decorator模式实例代码
Feb 09 Python
Python调用服务接口的实例
Jan 03 Python
在python中对变量判断是否为None的三种方法总结
Jan 23 Python
基于python-opencv3的图像显示和保存操作
Jun 27 Python
python自动分箱,计算woe,iv的实例代码
Nov 22 Python
Python箱型图处理离群点的例子
Dec 09 Python
3种python调用其他脚本的方法
Jan 06 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 17 Python
termux中matplotlib无法显示中文问题的解决方法
Jan 11 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脚本数据库功能详解(上)
2006/10/09 PHP
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
2019/05/25 PHP
js的with语句使用方法
2007/09/21 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
2016/05/16 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
Node.js 使用axios读写influxDB的方法示例
2018/10/26 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
python读取一个目录下所有txt里面的内容方法
2018/06/23 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
青春飞扬演讲稿
2014/09/11 职场文书
教师工作失职检讨书
2014/09/18 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
护士自我推荐信范文
2015/03/24 职场文书
开场白怎么写
2015/06/01 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技