Sie können nicht Response::withFile()
für Remote-Dateien verwenden, es funktioniert nur mit lokalen Dateien.
Wenn Sie Remote-Dateien bereitstellen möchten, müssen Sie sie entweder temporär auf Ihrem Server speichern oder selbst eine geeignete Download-Antwort erstellen. Verwenden Sie zum Beispiel den Callback-Stream CakePHP, damit der Antworttext die Daten manuell ausgibt.
Hier ist ein kurzes Beispiel (nicht-Bereichsanforderungen unterstützt):
return $this->response
->withType(pathinfo($remote_file, \PATHINFO_EXTENSION))
->withDownload(basename($remote_file))
->withLength(filesize($remote_file))
->withBody(new \Cake\Http\CallbackStream(function() use ($remote_file) {
ob_end_flush();
ob_implicit_flush();
readfile($remote_file);
}));
Siehe auch
Vielen Dank, das hat mir sehr geholfen. – Stefan