Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django下载的文件为空_Django_File_Download - Fatal编程技术网

Django下载的文件为空

Django下载的文件为空,django,file,download,Django,File,Download,我正在尝试做我认为在Django中非常简单的事情:根据用户请求动态创建一个XML文件,然后允许用户下载该文件。我做了大量的谷歌搜索,根据我所看到的一切,我做得很好: xmlFile = open({PATH_TO_FILE}, 'r') fileWrap = FileWrapper(xmlFile) response = HttpResponse(fileWrap, mimetype='text/xml') response['Content-Disposition'] = 'attachmen

我正在尝试做我认为在Django中非常简单的事情:根据用户请求动态创建一个XML文件,然后允许用户下载该文件。我做了大量的谷歌搜索,根据我所看到的一切,我做得很好:

xmlFile = open({PATH_TO_FILE}, 'r')
fileWrap = FileWrapper(xmlFile)
response = HttpResponse(fileWrap, mimetype='text/xml')
response['Content-Disposition'] = 'attachment; filename=data.xml'
response['Content-Length'] = os.path.getsize({PATH_TO_FILE})
return response

文件下载,但下载总是空的,即使我已经确认文件存在于磁盘上的正确位置并且不是空的。我曾在3种不同的浏览器(Firefox、Safari、Chrome)中尝试过,以防万一这是一种浏览器,但每次的结果都是一样的。啊。

请参阅我对您的原始帖子的评论,但如果您将第2行更改为以下内容,它可能会起作用:

fileWrap = FileWrapper(xmlFile.read())

@埃里克·奥康纳:为什么你要把文件存储在磁盘上,然后再加载?如果已经将
xml
文件存储为文件,那么将用户重定向到该文件不是更好吗?如果这不是您的目的,那么您应该在创建xml响应时简单地返回它。我也注意到了这个主题,所以这似乎是重复的:我确实注意到了另一个问题,但它不是重复的。在该问题中,此人没有正确地将其文件信息传递给FileWrapper类。具体地说,他们试图允许用户下载由FileField对象表示的文件,但他们没有正确访问字段数据。作为对你问题的回答,我不希望web服务器静态地提供文件;我希望下载由Django处理,因为我需要做一些额外的处理。您是否也确保文件在存储后具有正确的内容?是的,磁盘上的文件内容是正确的。