Py学习  »  问与答

Django如何实现文件下载?

傅道集-weibo • 10 年前 • 14875 次点击  

我想要完成这个功能:一个选课系统中,教师将该课程的学生信息从数据库导出,并保存在自定义的新文件下(这个文件的名字和保存位置可以由教师自行决定), 请问谁能给个思路应该怎么解决这个问题呢?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/126
 
14875 次点击  
文章 [ 3 ]  |  最新文章 6 年前
Py站长
Reply   •   1 楼
Py站长    6 年前

@小白河 增加一个域来记录下载次数,每次下载时 都+1

小白河
Reply   •   2 楼
小白河    6 年前

如果还要实现下载计次该如何实现呢?

Py站长
Reply   •   3 楼
Py站长    10 年前

可以使用以下函数来解决文件来传输:

def bigFileView(request):
    # do something...

    def readFile(fn, buf_size=262144):
        f = open(fn, "rb")
        while True:
            c = f.read(buf_size)
            if c:
                yield c
            else:
                break
        f.close()

    file_name = "big_file.txt"
    response = HttpResponse(readFile(file_name))

    return response

上面的方法可以解决文件的下载问题,并且,对于大文件的下载也是没有问题的。

具体可参见: http://oldj.net/article/django-big-file-response/

关于yield的用法 可参见: http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/