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

环境

  • win10
  • Python:3.6.7
  • Django:2.2.7

运行效果

1、创建 Django 项目

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

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

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/

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

(0)

相关推荐

  • 使用Django搭建web服务器的例子(最最正确的方式)

    今晚在Mac OS中搭建web服务器时遇到一点冲突,逛了几个论坛和网站,都说的太片面. 先列出最正确的搭建步骤:(无论你是任何操作系统,或者任何版本,都没毛病) ① 随便找个位置建一个文件夹(比如:Windows下的D盘) ② 打开终端(Windows下是cmd) cd 进入文件夹位置(简单吧) ③ 创建一个虚拟环境(虚拟环境就是磁盘一个位置,为了后续部署到服务器,这也是必须的并且是最正确的一步) ④ 激活虚拟环境 ⑤ 安装Django ⑥ 在Django 中创建一个项目 ⑦ 创建数据库 ⑧ 使

  • 树莓派3 搭建 django 服务器的实例

    树莓派3的基本配置 这里接着上一章的搭建过程,在我新购置的树莓派3上完成一个网页服务器的搭建以及后台数据库的相关配置.关于树莓派的玩点实在是太多,限于篇幅不做展开.由于我们仅仅只是搭建一个服务器,所以相关的桌面配置就显得没有那么必要了.选择系统: ubuntu-16.04-preinstalled-server-armhf+raspi3.img.xz 待系统安装完成以后,首先配置有线上网,由于实验室服务器设置了静态IP(防止服务器每次重启都要检查IP)没有采用DHCP协议.所以我们的有线需要手动

  • Centos5.4+Nginx-0.8.50+UWSGI-0.9.6.2+Django-1.2.3搭建高性能WEB服务器

    之前一直使用Nginx+Fastcgi来搭建python web服务器,本文介绍Nginx+UWSGI组合来实现.uWSGI 是一个快速的.纯C语言开发的.自维护的.对开发者友好的WSGI服务器,旨在提供专业的 Python web应用发布和开发.它更符合python web的标准协议,速度要比Fastcgi要快.性能更加稳定. 一.安装平台 1.安装pcre 复制代码 代码如下: cd /home mkdir -p /home/install/nginx && cd /home/inst

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

    环境 win10 Python:3.6.7 Django:2.2.7 运行效果 1.创建 Django 项目 # 创建Download项目 django-admin startproject Download # 创建down_app app python manage.py startapp down_app 2.修改配置文件:settings.py Download/Download/settings.py 1.添加注册APP:down_app 2.设置模板文件路径:templates 3.

  • 用Python一键搭建Http服务器的方法

    今天好友问我怎么从阿里云服务器上把文件下载下来.我一听之下觉得办法很多啊,随意搭个服务器,然后把文件一丢就可以下载了:弄个FTP也行:直接用远程桌面往下拖也可以. 考虑到便捷性,觉得上面的办法都比较麻烦,最好能有个直接解决问题的办法.然后就找到了Python里面. Python3请看 python -m http.server 8000 Python2请看 python -m SimpleHTTPServer 8000 总之就是一条Python命令就能在当前目录起一个Http服务器,然后就可以下

  • Python django搭建layui提交表单,表格,图标的实例

    利用layui制作与众不同的感谢表单,表格 layui极大的提高了前端开发效率,它极具个性的样式等等都非常吸引人,接下来我将为大家展示如何利用Python的django框架与layui制作极富个性的表单与数据表格 注:忽略创建项目,配置文件,若这部分内容不太明白,参考教你使用Django搭建一个基金模拟交易系统,里面会教你从项目创建到最终运行的完整流程. 第一步:在templates目录下新建一个index.html文件(文件内容根据自己的业务需求在layui官网复制即可),同时改变其布局只需将

  • Python+Django搭建自己的blog网站

    一.前言 1.1.环境 python版本:3.6 Django版本:1.11.6 1.2.预览效果 最终搭建的blog的样子,基本上满足需求了.框架搭好了,至于CSS,可以根据自己喜好随意搭配. 二.建立博客应用 2.1.建立项目和应用 创建工程blogproject python manage.py startproject blogproject 创建blog应用 python manage.py startpapp blog 打开 blogproject\ 目录下的 settings.py

  • Python Django搭建网站流程图解

    1. 创建Django REST framework工程 1.1手动创建工程文件夹 1.2进去工程文件夹内,执行命令:django-admin startproject web_project创建工程目录 1.3修改,添加目录结构 apps 存放Django的应用libs 存放第三方的库文件settings 存放配置文件的目录,分为开发dev和线上produtils 存放项目自己定义的公共函数或类等docs 用于存放一些说明文档资料 2. 修改配置文件 2.1 将Django工程中的settin

  • Python+django实现文件下载

    (1)方法一.直接用a标签的href+数据库中文件地址,即可下载.缺点:word excel是直接弹框下载,对于image txt 等文件的下载方式是直接在新页面打开. (2)方法二.在python后台对下载内容进项处理,返回内容直接弹出下载框. #后台处理函数 def downloadFile(req): filename=basePath+req.GET['url'] def file_iterator(file_name, chunk_size=512): with open(file_n

  • python+Django+pycharm+mysql 搭建首个web项目详解

    本文实例讲述了python+Django+pycharm+mysql 搭建首个web项目.分享给大家供大家参考,具体如下: 前面的文章记录了环境搭建的过程,本节记录首个web项目调试 首先检查安装的模块,输入dos命令 pip list, 会显示已安装的模块,看是否有Django,PyMySQL模块 C:\Users\Administrator\PycharmProjects>pip list DEPRECATION: The default format will switch to colu

  • python+django+selenium搭建简易自动化测试

    该平台会集成UI自动化及api自动化,里面也会涉及到一些简单的HTML等前端,当然都是很基础的东西.在以后的博客里,我会一点点的尽量写详细,帮助一些测试小白一起成长,当然我也是个小菜鸡. 第一章 django 搭建平台. 1.1搭建环境 Django 官方网站:https://www.djangoproject.com/ Python 官方仓库下载地址:https://pypi.python.org/pypi/Django 这里我们通过pip来安装django ,这里版本用1.10.3. Pyt

  • vscode搭建python Django网站开发环境的示例

    这里使用pip安装的方式,打开命令行,输入执行: pip install django==2.2 这里选择安装2.2版本是因为是新的lts版本,长期支持稳定版. 接下来再安装pillow,Django底层一部分是基于pillow进行的. pip install pillow pylint在面对django框架时表现的有些不足,所以我这里选择安装 pip install pylint_django 在vscode中安装Django:Django 的插件,用于模板中语法提示和补全,这里我们选择1.0

随机推荐