会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132431个问题
JAVA 全系列/第一阶段:JAVA 快速入门/变量、数据类型、运算符 10337楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 10338楼
WEB前端全系列/第二阶段:JavaScript编程模块/浏览器模型(BOM) 10340楼
WEB前端全系列/第二阶段:JavaScript编程模块/面向对象编程 10341楼

屏幕截图 2022-04-09 221759.png

屏幕截图 2022-04-09 221734.png

屏幕截图 2022-04-09 222039.png

老师,不知道是哪一步出错了,改了几次都不成功。

JAVA 全系列/第一阶段:JAVA 快速入门/变量、数据类型、运算符 10346楼

老师,自定义文件下载的视图函数部分代码还可以进行缩减,如下所示的代码可以实现跟视频一致的效果

def file_diy_download(request):
    # 获取 记录id
    id = request.GET.get('id')
    # 得到模型实例
    upload_file_img_diy = UploadFileImgDIY.objects.get(pk=id)
    # 得到模型的 FileField 属性
    file = upload_file_img_diy.file # 获得文件对象,目录分隔符是/,最高目录级别仅仅是父级文件夹
    # 得到 FileField 类的 file 属性, 是一个文件对象
    # file_diy = file.file # 获得以系统盘符开始的绝对路径显示的文件对象,目录分隔符是\

    # 通过 StreamingHttpResponse 进行文件下载,传入的参数为 文件的字节内容
    # response = StreamingHttpResponse(file_diy.read())
    response = StreamingHttpResponse(file.read()) # 这样写能达到一致的效果

    # 通过分割,将 diy/test1_1567676990.csv 获取到 test1_1567676990.csv
    name = file.name.split('/')[-1]
    # name = file_diy.name.split('\\')[-1]  # 第一个\开启转义,下载文件的格式跟name = file.name.split('/')[-1]一样
    # 附件模式
    # 要进行 编码和解码 ,因为http协议规定, 响应头的编码格式必须是 ISO-8859-1
    response['Content-Disposition'] = 'attachment;filename=' + name.encode('utf-8').decode('ISO-8859-1')

    return response


Python 全系列/第十二阶段:Python_Django3框架/Django高级 10347楼
JAVA 全系列/第五阶段:JavaWeb开发/Web实战案例 10348楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637