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 相关文章推荐
Django框架下在视图中使用模版的方法
Jul 16 Python
python实现外卖信息管理系统
Jan 11 Python
python中的随机函数random的用法示例
Jan 27 Python
Python中反射和描述器总结
Sep 23 Python
Python 一句话生成字母表的方法
Jan 02 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
Python初学者常见错误详解
Jul 02 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
Jul 04 Python
使用python和pygame制作挡板弹球游戏
Dec 03 Python
查看已安装tensorflow版本的方法示例
Apr 19 Python
Django的ListView超详细用法(含分页paginate)
May 21 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
php查询whois信息的方法
2015/06/08 PHP
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
教你如何用node连接redis的示例代码
2018/07/12 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
python中list循环语句用法实例
2014/11/10 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
python 字符串只保留汉字的方法
2018/11/16 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
好邻里事迹材料
2014/01/16 职场文书
国旗下演讲稿
2014/05/08 职场文书
绘画专业自荐信
2014/07/04 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
爱护环境卫生倡议书
2015/04/29 职场文书
2015年语文教师工作总结
2015/05/25 职场文书
公司催款律师函
2015/05/27 职场文书
Python简易开发之制作计算器
2022/04/28 Python