使用Python-Django实现下载操作时获取0字节文件

-1 投票
1 回答
1172 浏览
提问于 2025-04-17 13:55

我在使用 Django 1.4 开发一个下载功能,但结果不太对。下面是我的代码。当我点击超链接下载时,得到的文件是 0 字节,调试模式下的 Content-Length 显示为 0。我看了很多相关的问题,得到了些线索,但还是搞不清楚,为什么下载后文件是 0 字节。有没有人能帮我修改一下下面的代码,谢谢你们的时间。

   def download_file(request, filepath, filename):
        path_to_file = filepath+"\\"+filename
        serverfile = file(path_to_file, 'rb')
        response = HttpResponse(mimetype='application/force-download')
        response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(filename)
        response['Content-Length'] = serverfile.tell()
    return response

1 个回答

1

.tell() 是用来获取文件当前读取位置的。如果你还没有读取文件,那么当前的位置就是0。

你可以使用 os.stat(path_to_file).st_size 来获取文件的大小,单位是字节。需要注意的是,最好使用 os.path.join(filepath, filename) 来获取文件的完整路径,这样可以避免手动拼接路径带来的问题,确保在不同操作系统上都能正常使用。

撰写回答