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
    

  • 相关阅读:
    Netstat
    Ant+jmeter+jenkins搭建测试的持续集成
    一个不会写代码的测试员
    JMeter监控内存及CPU ——plugin插件监控被测系统资源方法
    Ant+jmeter 实现自动化性能测试
    selenium+jenkins网页自动化测试的构建
    JMeter分布式测试
    jmeter压力测试的简单实例+badboy脚本录制
    js倒计时
    容器
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15220154.html
Copyright © 2011-2022 走看看