Python Django搭建文件下载服务器的实现shili

这篇文章主要介绍Python Django搭建文件下载服务器的实现shili ,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

环境

  • win10

  • Python:3.6.7

  • Django:2.2.7

运行效果

Python Django搭建文件下载服务器的实现shili

1、创建 Django 项目

#创建Download项目
django-adminstartprojectDownload
#创建down_appapp
pythonmanage.pystartappdown_app

Python Django搭建文件下载服务器的实现shili

Python Django搭建文件下载服务器的实现shili

2、修改配置文件:settings.py

Download/Download/settings.py

1.添加注册APP:down_app

Python Django搭建文件下载服务器的实现shili

2.设置模板文件路径:templates

Python Django搭建文件下载服务器的实现shili

3、编写视图函数:views.py

Download/down_app/views.py

importos
fromdjango.httpimportHttpResponse
fromdjango.httpimportStreamingHttpResponse


defimage_down(request):
"""
下载图片
"""
img_name=request.GET.get("username")+".png"#二维码图片名
base_dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#项目根目录
file_path=os.path.join(base_dir,'antirisk/CodeGenerate/image/code',img_name)#二维码的绝对路径

ifnotos.path.isfile(file_path):#判断下载文件是否存在
returnHttpResponse("SorrybutNotFoundtheFile")

deffile_iterator(file_path,chunk_size=512):
"""
文件生成器,防止文件过大,导致内存溢出
:paramfile_path:文件绝对路径
:paramchunk_size:块大小
:return:生成器
"""
withopen(file_path,mode='rb')asf:
whileTrue:
c=f.read(chunk_size)
ifc:
yieldc
else:
break

try:
#设置响应头
#StreamingHttpResponse将文件内容进行流式传输,数据量大可以用这个方法
response=StreamingHttpResponse(file_iterator(file_path))
#以流的形式下载文件,这样可以实现任意格式的文件下载
response['Content-Type']='application/octet-stream'
#Content-Disposition就是当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名
response['Content-Disposition']=f'attachment;filename="1.png"'#文件名不可设置为中文
except:
returnHttpResponse("SorrybutNotFoundtheFile")

returnresponse

4、修改路由配置:urls.py

Download/Download/urls.py

fromdjango.contribimportadmin
fromdjango.urlsimportpath,re_path
fromdown_appimportviews

urlpatterns=[
path('admin/',admin.site.urls),
path('',views.index),
re_path('download/)',views.image_down,name="download"),
]

5、创建并编写:index.html

Download/templates/index.html

<!DOCTYPEhtml>
<htmllang="en">
<head>
<metacharset="UTF-8">
<title>Title</title>
</head>
<body>
<ahref="/download/"rel="externalnofollow">下载图片</a>
</body>
</html>

运行

#运行项目
pythonmanage.pyrunserver

Python Django搭建文件下载服务器的实现shili

# 访问: http://127.0.0.1:8000/

Python Django搭建文件下载服务器的实现shili

以上是“Python Django搭建文件下载服务器的实现shili ”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-05-10 20:38:05
收藏
分享
海报
0 条评论
179
上一篇:Pythonzhong 简单容易上手的画图工具库有哪些 下一篇:ps涂抹工具快捷键是什么
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码