zoukankan      html  css  js  c++  java
  • python测试开发django-112.文件下载功能

    前言

    开发一个文件下载功能,在页面上点下载按钮,可以下载一个文件,如excel,word,pdf等

    前端模板

    前端页面写一个a标签,href地址对应接口下载接口地址:/downpdf

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>down file</title>
    </head>
    <body>
    
    <h3>下载文件功能开发</h3>
    
    <a href="/downpdf">点我下载</a>
    
    </body>
    </html>
    

    待下载的文件放到static目录,如:python1.pdf

    views.py视图函数

    下载文件使用FileResponse,添加返回头部参数Content-Type和Content-Disposition

    from MyDjango.settings import BASE_DIR
    from django.views import View
    from django.http import FileResponse, HttpResponse
    import os
    # 作者-上海悠悠 QQ交流群:717225969
    # blog地址 https://www.cnblogs.com/yoyoketang/
    
    
    class DownPage(View):
    
        def get(self, request):
            """访问web页面"""
            return render(request, 'downfile.html')
    
    
    class DownPDF(View):
    
        def get(self, request):
            """下载pdf接口"""
            # 文件路径
            file_path = os.path.join(BASE_DIR, 'static', "python1.pdf")
            print("11111111111111111111111")
            print(file_path)
            file = open(file_path, 'rb')
            response = FileResponse(file)
            response['Content-Type'] = 'application/octet-stream'
            response['Content-Disposition'] = 'attachment;filename="python1.pdf"'
            return response
    
    

    路由设置

    urls.py设置网页访问地址和文件下载地址

    urlpatterns = [
        url('^down$', views.DownPage.as_view()),
        url('^downpdf$', views.DownPDF.as_view())
    ]
    
    

    页面效果

    web页面访问

    点击下载效果

    在浏览器直接访问下载地址http://localhost:8000/downpdf 也可以下载

    文件名称带中文

    下载的文件名称带中文的时候,需要转码,转成ISO-8859-1编码

    response = FileResponse(file)
            response['Content-Type'] = 'application/octet-stream'
            att = 'attachment; filename=python悠悠1.pdf.exe'
            response['Content-Disposition'] = att.encode('utf-8', 'ISO-8859-1')
            return response
    

  • 相关阅读:
    图像识别试验
    uCos-III移植到STM32F10x
    我为什么要学习C++反汇编
    网络爬虫基本原理(一)
    JavaScript对象模型-执行模型
    gdb core调试
    进程、轻量级进程(LWP)、线程
    谁动了我的cpu——oprofile使用札记
    Linux IO多路复用之epoll网络编程(含源码)
    黑客常用WinAPI函数整理
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15220154.html
Copyright © 2011-2022 走看看