使用Python-Django实现下载操作时获取0字节文件
我在使用 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)
来获取文件的完整路径,这样可以避免手动拼接路径带来的问题,确保在不同操作系统上都能正常使用。