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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
Python实现的ini文件操作类分享
Nov 20 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
python之Character string(实例讲解)
Sep 25 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
使用Keras实现Tensor的相乘和相加代码
Jun 18 Python
python db类用法说明
Jul 07 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
python进度条显示之tqmd模块
Aug 22 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 22 Python
python自动化测试之Selenium详解
Mar 13 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 传值赋值与引用赋值的区别
2010/12/29 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
php制作文本式留言板
2015/03/18 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
原生态js,鼠标按下后,经过了那些单元格的简单实例
2016/08/11 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
编程语言Python的发展史
2014/09/26 Python
python如何实现反向迭代
2018/03/20 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
Python程序暂停的正常处理方法
2019/11/07 Python
python清空命令行方式
2020/01/13 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
银行柜员应聘推荐信范文
2013/11/24 职场文书
自书遗嘱范文
2015/08/07 职场文书
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript