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之dict()的操作方法
Sep 24 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
Apr 08 Python
Python中的index()方法使用教程
May 18 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
提升Python程序性能的7个习惯
Apr 14 Python
flask框架蓝图和子域名配置详解
Jan 25 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 Python
Python自动化办公Excel模块openpyxl原理及用法解析
Nov 05 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 Python
python 爬取腾讯视频评论的实现步骤
Feb 18 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
Mar 23 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
正义联盟的终局之战《天启星战争》将成为DC动画宇宙的最后一部
2020/04/09 欧美动漫
php流量统计功能的实现代码
2012/09/29 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
强制设为首页代码
2006/06/19 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
JS实现留言板功能
2017/06/17 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
详解vue axios二次封装
2018/07/22 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
python机器学习之决策树分类详解
2017/12/20 Python
使用Python制作微信跳一跳辅助
2018/01/31 Python
django 发送手机验证码的示例代码
2018/04/25 Python
python 实现在txt指定行追加文本的方法
2018/04/29 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
linux环境下安装python虚拟环境及注意事项
2020/01/07 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
python字符串下标与切片及使用方法
2020/02/13 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
2020/07/01 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
基于Python实现粒子滤波效果
2020/12/01 Python
分享一个python的aes加密代码
2020/12/22 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
应届毕业生求职信范文分享
2013/12/26 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers