最近刚学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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2017-07-22

python实现文件上传功能_python实现上传下载文件功能相关推荐

  1. python下载网页中的pdf文件_【Python】Python的urllib模块、urllib2模块批量进行网页下载文件...

    由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url ...

  2. python编写代码实现文件的拷贝功能_python利用os模块编写文件复制功能——copy()函数用法...

    我就废话不多说了,大家还是直接看代码吧~ #文件复制 import os src_path=r'E:\Pycharm\python100题\代码' target_path=r'E:\Pycharm\p ...

  3. 原python最简单的图形编程_Python(简单图形和文件处理)编程

    Python确实是一门很简洁而且功能有强大的语言,我觉得开始学习很容易理解,说到熟练和精通还是不容易的,还需不断学习. 从最基础的语法学习,有些部分各种语言是相同的,让人很好理解.编程也是从最简单语法 ...

  4. 利用mysql实现上传和下载_将文件上传到数据库 和 从数据库下载文件到本地

    有时候我们需要把图片.文档.dll文件.等等,上传的数据库,然后当需要的时候再从数据库中读取到本地,下面我以上传图片为例,讲解一下如何把本地的一张图片上传到数据库,然后再从数据库下载到本地. 工具:V ...

  5. python读取excel内容和写入_Python读取和写入Excel文件

    制作Excel表 常用方法说明 Workbook类 Workbook类创建一个XlswWrite的Workbook对象,相当于创建一个excel表 And_worksheet()用来创建工作表,默认为 ...

  6. ubuntu从本地上传文件到云服务器、从云服务器下载文件到本地的命令(亲测有效)

    1.ubuntu从本地上传文件到云服务器: sudo scp 本地文件路经 username@目标ip:目标路径 在本地打开终端,输入命令,如: scp ./localfile.txt usernam ...

  7. python多线程下载大文件_Python threading多线程断点下载文件的方法

    这是玩蛇网一篇关于Python多线程下载文件方法的代码实例.文中应用到的python模块和方法有httplib.Python urllib2.Python threading多线程模块.python ...

  8. python读取docx的内容输出_Python应用 , 读写docx文件!

    字处理软件是平时办公必备的同时也是最常用的软件之一,而字处理软件用的最多最频繁的就是微软的word,其扩展名为docx.在日常工作中,可能需要对很多的docx文件进行批处理,例如教师在批阅学生提交的电 ...

  9. python我想对你说_python学习第6天----文件操作

    1.文件操作 python中通过open()函数打开一个文件,获取到文件句柄,然后通过文件句柄就可进行各种操作(句柄就相当于一个变量),文件句柄是一个可迭代对象 打开文件的操作有:r,w,a,r+,w ...

最新文章

  1. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用29
  2. (005)RN开发 js jsx ts tsx的区别
  3. 《网络攻防实践》第二周学习总结
  4. sqlserver 更新 datetime 数据_获取股票分笔数据存储本地
  5. 有向无环图的拓扑排序
  6. vue实现星级评价效果
  7. 设计模式学习笔记1——类与类之间的关系
  8. linux中的特殊文件权限
  9. Mathematica开方语法
  10. 自学python买什么教材-学习Python的正确姿势—基础教学,教科书该怎么买?
  11. 使用Python编写Prometheus监控metrics接口
  12. 基于MATLAB的窗函数滤波器设计,基于matlab的FIR滤波器窗函数设计
  13. BM3D 算法原理详细解析 按过程步骤讲解(附C++实现代码)
  14. 从高考落榜生到网络专家
  15. [Python从零到壹] 七.网络爬虫之Requests爬取豆瓣电影TOP250及CSV存储
  16. PS增效工具Camera Raw 14
  17. 传奇服务器攻城文件,单机架设传奇服务器第33课:攻城奖励自动发放
  18. python是高级语言还是低级语言_机械语言/汇编语言/低级语言/高级语言各是指的什么...
  19. C语言程序设计学习笔记:P1-程序设计与C语言
  20. Origin画图技巧之设置框图默认设置

热门文章

  1. python模块初始与time、datetime及random
  2. Python:执行精确的浮点数运算
  3. 二级c语言努力学可以过吗,考过计算机二级C语言一些感想和建议
  4. linux dmesg命令(显示开机信息)
  5. ffmpeg与x264有什么区别?
  6. python 绝对路径
  7. Python 计算机视觉(十四)—— OpenCV 进行霍夫变换
  8. linux——不同系统间的文件传输和打包压缩
  9. java的object如何转为具体的类_佛山个体户如何转为公司?
  10. 如何理解java中String的不可变性