2017-01-23 4 views
1

Laravel 5.3Laravel 5,3 Antwort() -> Download - Datei (.doc, .docx)

Wenn ich eine Datei (.doc, .docx) aus meinem Speicherordner herunterladen unleserlich wird es nach dem Download wird unlesbar. Wenn ich in den lokalen Ordner gehe und die Datei öffne, ist sie gültig und lesbar.

Ich bin mit der Standard-Download-Funktion, Kopf- und Sachen mit .. Werfen Sie einen Blick auf meinem Code:

$fileNameGenerate = 'example_filename'; 
$fileArr = [ 'wierd_filename', 'docx' ]; 
$cvPath = storage_path('app/example_folder/subfolder/wierd_filename.docx'); 

$headers = array(
    'Content-Type: application/' . $fileArr[1], 
); 

try { 


    return response()->download($cvPath, $fileNameGenerate . '.' . $fileArr[1], $headers); 


} catch (\Exception $e) { 
    //Error 
    return redirect()->back()->with('error', trans('locale.file_does_not_exists')); 
} 

Weiß jemand, was hier falsch ist? Vielen Dank!

Update: Ich entfernte Header, es funktioniert nicht mit oder ohne sie.

Hier ist, wie die Dateien in den zwei verschiedenen Fällen machen:

The second file - gone wrong

+0

Haben Sie versucht, $ fileArr [1] zu drucken und sicherzustellen, dass der richtige Mime-Typ angegeben wird? – Rahi

+0

Die Kopfzeile muss nicht festgelegt werden. Sie sagen dem Browser, dass er die Datei herunterladen soll. – Ohgodwhy

+0

@Rahi, ja das Array ist korrekt. Eigentlich ist doc, nicht docx, aber es sollte immer noch funktionieren: array (0 => "c58ae31d925e486953c5f029bfcf8916", 1 => "doc") –

Antwort

0

Versuchen Sie, diese public function getDownload() {

// doc-Datei unter Ablagepfad gespeichert/download/info.docx

$file= pathofstorage. "/download/info.docx"; 

return response()->download($file); 

}

+0

Nein, das funktioniert nicht. Die Datei wird überhaupt nicht heruntergeladen, wenn ich diese Funktion von einer anderen Funktion aus anrufe. Wenn ich meine Routen zu dieser Funktion ändere, startet der Download und erneut - die Datei ist nicht lesbar –

0

ich hinzugefügt:

ob_end_clean(); 

vor:

response -> download 

und es funktionierte für mich.

Verwandte Themen