2010-12-30 2 views
0

저는 장고에서 매우 간단하다고 생각하는 것을하려고합니다 : 사용자 요청을 기반으로 XML 파일을 동적으로 작성한 다음 사용자가 해당 파일을 다운로드 할 수있게하십시오.다운로드 한 Django 파일이 비어 있습니다.

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)에서이 작업을 시도했지만 결과는 매번 동일합니다. 아하.

+1

@Eric 오코너 : 당신은 왜 디스크에 파일을 저장하는 것은 그 이후를 적재하기? 이미 파일로 저장했다면 사용자를'xml' 파일로 리디렉션하는 것이 더 낫지 않습니까? 그리고 그것이 당신의 목적이 아니라면, XML 응답을 생성 할 때 XML 응답을 반환해야합니다. – Wolph

+0

방금이 주제를 발견했습니다. 중복 된 것으로 보입니다. http://stackoverflow.com/questions/3213060/django-download-file-not-working/3213548#3213548 – Wolph

+0

다른 문제점 , 그러나 그것은 중복이 아닙니다. 그 문제에서, 그 사람은 자신의 파일 정보를 FileWrapper 클래스에 올바르게 전달하지 못했습니다. 특히, 사용자가 FileField 객체가 나타내는 파일을 다운로드 할 수있게하고 필드 데이터에 올바르게 액세스하지 못하게하려고했습니다. 그리고 귀하의 질문에 대답, 나는 파일을 정적으로 웹 서버에 의해 제공되고 싶지 않아; 장고에 의해 다운로드가 처리되기를 바란다. 내가해야 할 추가 처리가 있기 때문이다. –

답변

0

은 원래 게시물에 내 의견을 참조하지만,이에 2 호선을 변경하는 경우 그것은 작동 할 수 있습니다

fileWrap = FileWrapper(xmlFile.read()) 
관련 문제