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设计模式之代理模式实例详解
Jan 19 Python
python+logging+yaml实现日志分割
Jul 22 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
Python @property原理解析和用法实例
Feb 11 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 Python
python中用ggplot绘制画图实例讲解
Jan 26 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 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 VS ASP
2006/10/09 PHP
PHP实现Socket服务器的代码
2008/04/03 PHP
php循环输出数据库内容的代码
2008/05/24 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
php调整服务器时间的方法
2015/04/03 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
用innerhtml提高页面打开速度的方法
2013/08/02 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
vue 中directive功能的简单实现
2018/01/05 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
python制作企业邮箱的爆破脚本
2016/10/05 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
EMPHASIS艾斐诗官网:周生生旗下原创精品珠宝品牌
2020/12/17 全球购物
应届大学生自荐信格式
2013/09/21 职场文书
思想专业自荐信范文
2013/12/25 职场文书
会计顶岗实习心得
2014/01/25 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
水电维修专业推荐信
2014/09/06 职场文书
golang判断key是否在map中的代码
2021/04/24 Golang
MySQL注入基础练习
2021/05/30 MySQL