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 元类使用说明
Dec 18 Python
Python的迭代器和生成器使用实例
Jan 14 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
Sanic框架配置操作分析
Jul 17 Python
python实现公司年会抽奖程序
Jan 22 Python
python实现统计文本中单词出现的频率详解
May 20 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 Python
python实现图片转字符画的完整代码
Feb 21 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
TensorFlow的自动求导原理分析
May 26 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
我的论坛源代码(一)
2006/10/09 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP编程风格规范分享
2014/01/15 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
iview table高度动态设置方法
2018/03/14 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
浅谈Python中数据解析
2015/05/05 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
2018/07/11 Python
详解Python的数据库操作(pymysql)
2019/04/04 Python
python里dict变成list实例方法
2019/06/26 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
python sleep和wait对比总结
2021/02/03 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
总结表彰大会主持词
2014/03/26 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
小学生读书笔记
2015/07/01 职场文书
Linux中sftp常用命令整理
2022/06/28 Servers