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


Posted in Python onMay 10, 2021

环境

  • win10
  • Python:3.6.7
  • Django:2.2.7

运行效果

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

1、创建 Django 项目

# 创建Download项目
django-admin startproject Download
# 创建down_app app
python manage.py startapp down_app

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

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

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

Download/Download/settings.py

1.添加注册APP:down_app

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

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

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

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

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

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

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

到此这篇关于Python Django搭建文件下载服务器的实现的文章就介绍到这了,更多相关Django搭建文件下载服务器内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
深入讨论Python函数的参数的默认值所引发的问题的原因
Mar 30 Python
python抓取网页中图片并保存到本地
Dec 01 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Python 3中print函数的使用方法总结
Aug 08 Python
基于Django模板中的数字自增(详解)
Sep 05 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
python 直接赋值和copy的区别详解
Aug 07 Python
Python队列、进程间通信、线程案例
Oct 25 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
Django实现内容缓存实例方法
Jun 30 Python
Python变量格式化输出实现原理解析
Aug 06 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
Sep 29 Python
详解python的内存分配机制
May 10 #Python
python-for x in range的用法(注意要点、细节)
May 10 #Python
Django显示可视化图表的实践
python 中[0]*2与0*2的区别说明
May 10 #Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
You might like
一个程序下载的管理程序(一)
2006/10/09 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
jQuery实现的分页功能示例
2017/01/22 Javascript
js for循环倒序输出数组元素的实例
2017/03/01 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
centos7中安装python3.6.4的教程
2019/12/11 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
社区党员先进事迹
2014/01/22 职场文书
自主招生自荐信指南
2014/02/04 职场文书
12月红领巾广播稿
2014/02/13 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
汽车专业求职信
2014/06/05 职场文书
校园标语大全
2014/06/19 职场文书
青涩记忆观后感
2015/06/18 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python