Django 如何下载文件

在Django项目中:

用到 MEDIA_URL = "/media/" 如何下载文件

一、如果保存的时候更改了上传的文件名字,下载时想要和上传的时名字一样,需要编写下载函数。

接下来编写的是下载文件的函数:

from django.http import FileResponse
def download_file(request):
    try:
        url = "file.txt"  # 文件路径
        file_name = "file_name"  # 文件名字
        file_path = os.path.join(settings.MEDIA_ROOT, url)  #  MEDIA_ROOT = os.path.join(BASE_DIR, "media")
        try:
            response = FileResponse(open(file_path, 'rb'), as_attachment=True)
        except:
            # 意外报错的话下载自己准备的错误文件
            response = FileResponse(open(os.path.join(settings.MEDIA_ROOT, "error.txt"), 'rb'), as_attachment=True)
            file_name = "error.txt"  # 重命名
        response['Content-Disposition'] = 'attachment;filename="{}"'.format(escape_uri_path(file_name))  # escape_uri_path(file_name) 给文件重命名
        return response
    except Exception as e:
        return HttpResponse("没找到对应的文件,下载失败")

 

二、如果上传时没有更改文件名,可以直接时候 ‘media’

例如:<a href="/media/{% url '文件路径' %}"></a>

 

posted @ 2021-12-31 15:18  小渔儿  阅读(807)  评论(0)    收藏  举报