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获取当前日期和时间的方法
Apr 30 Python
Python3写入文件常用方法实例分析
May 22 Python
Python 爬虫爬取指定博客的所有文章
Feb 17 Python
Linux下python3.7.0安装教程
Jul 30 Python
python 实现倒排索引的方法
Dec 25 Python
python实现趣味图片字符化
Apr 30 Python
pyqt5 实现多窗口跳转的方法
Jun 19 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
Apr 08 Python
Python 微信公众号文章爬取的示例代码
Nov 30 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
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
php实现简单的上传进度条
2015/11/17 PHP
javascript 简练的几个函数
2009/08/29 Javascript
检测input每次的输入是否合法遇到汉字输入就有问题
2012/05/23 Javascript
JS简单操作select和dropdownlist实例
2014/11/26 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
[48:00]EG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/29 DOTA
Python Socket使用实例
2017/12/18 Python
Python爬虫实现百度图片自动下载
2018/02/04 Python
python删除字符串中指定字符的方法
2018/08/13 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
Python内置函数property()如何使用
2020/09/01 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
Python 中Operator模块的使用
2021/01/30 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
师德师风自我剖析材料
2014/09/27 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
高考升学宴答谢词
2015/01/20 职场文书
检讨书怎么写?
2019/06/21 职场文书
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python