前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python测试开发django-112.文件下载功能

python测试开发django-112.文件下载功能

作者头像
上海-悠悠
发布2021-09-14 11:30:09
3740
发布2021-09-14 11:30:09
举报
文章被收录于专栏:从零开始学自动化测试

前言

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

前端模板

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

代码语言:javascript
复制
<!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

代码语言:javascript
复制
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设置网页访问地址和文件下载地址

代码语言:javascript
复制
urlpatterns = [
    url('^down$', views.DownPage.as_view()),
    url('^downpdf$', views.DownPDF.as_view())
]

页面效果

web页面访问

点击下载效果

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

文件名称带中文

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

代码语言:javascript
复制
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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 前端模板
  • views.py视图函数
  • 路由设置
  • 页面效果
  • 文件名称带中文
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档