Python中怎么用Django实现文件下载服务器
Admin 2022-06-17 群英技术资讯 659 次浏览
在这篇文章中,我们来学习一下“Python中怎么用Django实现文件下载服务器”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。
# 创建Download项目 django-admin startproject Download # 创建down_app app python manage.py startapp down_app


Download/Download/settings.py
1.添加注册APP:down_app

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

3、编写视图函数:views.py
Download/down_app/views.py
import os
from django.http import HttpResponse
from django.http import StreamingHttpResponse
def image_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) # 二维码的绝对路径
if not os.path.isfile(file_path): # 判断下载文件是否存在
return HttpResponse("Sorry but Not Found the File")
def file_iterator(file_path, chunk_size=512):
"""
文件生成器,防止文件过大,导致内存溢出
:param file_path: 文件绝对路径
:param chunk_size: 块大小
:return: 生成器
"""
with open(file_path, mode='rb') as f:
while True:
c = f.read(chunk_size)
if c:
yield c
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:
return HttpResponse("Sorry but Not Found the File")
return response
4、修改路由配置:urls.py
Download/Download/urls.py
from django.contrib import admin
from django.urls import path, re_path
from down_app import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index),
re_path('download/)', views.image_down, name="download"),
]
5、创建并编写:index.html
Download/templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/download/" rel="external nofollow" >下载图片</a>
</body>
</html>
运行
# 运行项目 python manage.py runserver

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

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了Python 入门学习之函数式编程, Python 中的函数式编程技术进行了简单的入门介绍,下文详细内容需要的小伙伴可以参考一下
文本主要给大家分享使用python怎么实现整数反转,下面分享了实现思路以及几种实现整数反转的方法,感兴趣的朋友可以参考,下面我们就一起来看看python实现整数反转要怎么做吧!
今天就给大家分享一些python常用的编程模块吧,包括文件流的读写及如何删除str中的特定字符,感兴趣的朋友跟随一起学习下吧
这篇文章主要为大家介绍了python神经网络之批量学习tf.train.batch函数示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
用python处理中文,读取文件或消息时,如果发现乱码(字符串处理,读写文件,print),大多数人的做法是,调用encode decode进行调试,并没有
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008