मैं कुछ फ़ाइलों को HttpResponse में वापस करना चाहता हूं और मैं निम्न फ़ंक्शन का उपयोग कर रहा हूं। फ़ाइल जो हमेशा लौटाई जाती है, में 1kb का फाइलसाइज होता है और मुझे नहीं पता कि क्यों। मैं फ़ाइल खोल सकता हूं, लेकिन ऐसा लगता है कि यह सही तरीके से परोसा नहीं जाता है। इस प्रकार मैं जानना चाहता था कि कैसे एक HttpResponse पर django/पायथन के साथ फाइलें वापस कर सकते हैं।django HttpResponse पर फ़ाइल लौटाएं - फ़ाइल सही ढंग से नहीं दी गई है
@login_required
def serve_upload_files(request, file_url):
import os.path
import mimetypes
mimetypes.init()
try:
file_path = settings.UPLOAD_LOCATION + '/' + file_url
fsock = open(file_path,"r")
#file = fsock.read()
#fsock = open(file_path,"r").read()
file_name = os.path.basename(file_path)
file_size = os.path.getsize(file_path)
print "file size is: " + str(file_size)
mime_type_guess = mimetypes.guess_type(file_name)
if mime_type_guess is not None:
response = HttpResponse(fsock, mimetype=mime_type_guess[0])
response['Content-Disposition'] = 'attachment; filename=' + file_name
except IOError:
response = HttpResponseNotFound()
return response
संपादित करें: बग वास्तव में एक बग ;-)
यह समाधान एक अपाचे सर्वर पर उत्पादन में काम कर रहा है नहीं है, इस प्रकार स्रोत ठीक है।
इस प्रश्न को लिखते समय मैंने इसे django विकास सर्वर के साथ स्थानीय परीक्षण किया और यह सोच रहा था कि यह क्यों काम नहीं करता है। मेरे एक दोस्त ने मुझे बताया कि माइम प्रकार सर्वर में सेट नहीं होने पर यह समस्या उत्पन्न हो सकती है। लेकिन उसे यकीन नहीं था कि यह समस्या है या नहीं। लेकिन निश्चित रूप से एक बात .. यह सर्वर के साथ कुछ करने के लिए है।
जो लोग इस कोड का उपयोग करने का प्रयास करते हैं, उनके लिए ध्यान रखें कि 'HttpResponse' में' mimetype' तर्क 'content_type' फ़ील्ड के साथ बदल दिया गया है। –