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实现给qq邮箱发送邮件的方法
May 28 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
Python 数据库操作 SQLAlchemy的示例代码
Feb 18 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
python爬虫搭配起Bilibili唧唧的流程分析
Dec 01 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 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下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
PHP MVC框架skymvc支持多文件上传
2016/05/26 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
JavaScript 原型学习总结
2010/10/29 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
js代码实现点击按钮出现60秒倒计时
2021/01/28 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
js实现弹窗效果
2020/08/09 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
python文件写入write()的操作
2019/05/14 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
致跳远运动员广播稿
2014/02/11 职场文书
初三学生个人自我评定
2014/04/06 职场文书
五好关工委申报材料
2014/05/31 职场文书
五心教育心得体会
2014/09/04 职场文书
个人投资合作协议书
2014/10/12 职场文书
2015年实习单位评语
2015/03/25 职场文书
python之基数排序的实现
2021/07/26 Python