Mein Django-Projekt verwendet den folgenden Code zum Herunterladen der Datei. Es funktioniert alles gut, wenn der Client-Rechner IDM installiert hat, aber nicht funktioniert, wenn IDM nicht installiert ist. Ich konnte keinen Grund für diese Seltsamkeit finden.Django-Download funktioniert nicht mit Browser, funktioniert aber auf Computern, auf denen Internet Download Manager (IDM) installiert ist
views.py
def somefunction():
something something
return render(request,
'something/download/download.html',
{'pdf_file_location': pdf_file_location})
def download(request):
if not request.user.is_authenticated():
return render(request, 'login/login/login.html')
else:
filename = request.POST.get('pdf_file_location')
if request.method == 'POST':
while os.path.exists(filename) is False:
time.sleep(2)
chunk_size = 8192
response = StreamingHttpResponse(FileWrapper(open(filename, 'rb'), chunk_size),
content_type=mimetypes.guess_type(filename)[0])
response['Content-Length'] = os.path.getsize(filename)
response['Content-Disposition'] = "attachment; filename=%s" % filename[filename.find("UserSessionDetails-")+19:]
return response
return render(request, 'something/something/index.html')
download.html
<canvas id="c-timer" width="300" height="300">
<input id="pdf_file_location" type="hidden" value={{ pdf_file_location }} name="pdf_file_location"/>
</canvas>
js für die download.html
var val = document.getElementById('pdf_file_location').value
data ={"pdf_file_location": val};
something something and then finishTime is called
var finishTime = function() {
$.post("/book_publish/download/",data);
};
Ich habe nicht viel Wissen darüber, wie IDM funktioniert, aber Lesen this article sagt mir, dass es keine Oberhand abgesehen von der Tatsache geben sollte, dass es mehrere Co öffnet Verbindungen für die Operation, und mein Code sendet Daten in Blöcken. Kann der Browser die Daten nicht zusammenfügen, wenn sie in kleinen Blöcken gesendet werden?