django:开发一个下载图片的接口

摘要:
html页面如下:˂!

html页面如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="" method="post" enctype="multipart/form-data">
        <p align="center">请输入文件名:<input type="text" name="filename" /></p>
        <p align="center"><input type="submit" value="下载" /></p>
    </form>
</body>
</html>

效果如图:

django:开发一个下载图片的接口第1张

views视图函数如下:

根据传递的文件名称,先判断用户输入是否为空,再判断文件路径是否存在,如果存在就返回文件

from django.http import HttpResponse, FileResponse

def FileDownload(request):
    if request.method == "GET":
        return render(request, "download.html")
    if request.method == "POST":
        file_name = request.POST.get("filename")
        print("获取到的文件名是:{}".format(file_name))
        if file_name:
            path = '{}\up_image\{}'.format(settings.MEDIA_ROOT, '{}.png'.format(file_name))
            if os.path.exists(path) == True:  # 判断文件是否存在
                save_path = open(path, "rb")
                response = FileResponse(save_path)
                response['Content-Type'] = 'application/octet-stream'
                filename = 'attachment; filename=' + '{}.png'.format(file_name)
                # TODO 设置文件名的包含中文编码方式
                response['Content-Disposition'] = filename.encode('utf-8', 'ISO-8859-1')
                # response['Content-Disposition'] = 'attachment;filename='+ '{}.png'.format(file_name)
                return response
            else:
                return HttpResponse("文件不存在")
        else:
            return HttpResponse("请输入正确的文件名")

urls配置访问地址:

如图:

django:开发一个下载图片的接口第2张

访问下载如图:

django:开发一个下载图片的接口第3张

抓包如图:

django:开发一个下载图片的接口第4张

免责声明:文章转载自《django:开发一个下载图片的接口》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇汇编语言程序入门实验二:在dos下建立子目录操作wireshark抓包看ECN下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Django2实战示例 第四章 创建社交网站

目录 Django2实战示例 第一章 创建博客应用Django2实战示例 第二章 增强博客功能Django2实战示例 第三章 扩展博客功能Django2实战示例 第四章 创建社交网站Django2实战示例 第五章 内容分享功能Django2实战示例 第六章 追踪用户行为Django2实战示例 第七章 创建电商网站Django2实战示例 第八章 管理支付与订...

Django中的缓存

django内置了缓存框架,并提供了几种常用的缓存: 1、基于Memcached缓存 2、使用数据库进行缓存 3、使用文件系统进行缓存 4、使用本地内存进行缓存 5、提供缓存扩展接口 缓存配置 数据库缓存 1、创建缓存表 python manage.py createcachetable [tablename] 2、缓存配置 CACHES = { 'def...

Django基础(1)

昨日内容回顾: 1. socket创建服务器 2. http协议: 请求协议 请求首行 请求方式 url?a=1&b=2协议 请求头 key:value 请求体 a=1&b=2(只有post请求才有请求体) 响应协议...

zuul隔离机制

文章转载自:https://blog.csdn.net/farsight1/article/details/80078099 ZuulException REJECTED_SEMAPHORE_EXECUTION 是一个最近在性能测试中经常遇到的异常。查询资料发现是因为zuul默认每个路由直接用信号量做隔离,并且默认值是100,也就是当一个路由请求的信号量高...

关于 Cannot forward after response has been committed的错误

这个错误顾名思义:就是在给客户端做出提交响应完毕后,就不能再次使用request的转发。 代码原先是这样的: 1 packagecom.bdqn.jsp.study.web.filter; 2 3 import javax.servlet.*; 4 importjavax.servlet.annotation.WebFilter; 5 impor...

8. Django系列之上传文件与下载-djang为服务端,requests为客户端

preface 运维平台新上线一个探测功能,需要上传文件到服务器上和下载文件从服务器上,那么我们就看看requests作为客户端,django作为服务器端怎么去处理? 对于静态文件我们不建议通过django下载,而是建议通过django返回一个重定向URL(下载文件的URL)给client,这个url是nginx提供下载,众所周知,nginx是非常牛逼的静...