2017-05-05 4 views
0

Hochladen von Bildern auf den Servern endet korrekt und Dateien in meinen Upload-Ordnern sind die gleichen, die die gesendet wurden. Sie werden auch korrekt auf meiner Seite angezeigt, aber nach dem Download kann ich sie nicht verwenden.PHP - heruntergeladene Bild ist kaputt

Windows-Bildbetrachter sagt mir, „Die Datei nicht geöffnet werden kann, weil es defekt oder beschädigt oder zu groß“

Der Code:

$file= \FileQuery::create()->findPk($params["fileId"]); 
if ($file) { 
    $finfo = finfo_open(FILEINFO_MIME_TYPE); 
    $filePath = $file->getFilepath(); 
    header('Content-Type: '.finfo_file($finfo, $filePath)); 
    finfo_close($finfo);     
    header('Content-Disposition: attachment; filename=' .basename($filePath)); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 

    flush(); 
    readfile($filePath); 
} 

Wenn ich die Bilder mit dem Editor bearbeiten ++ kann ich Beachten Sie, dass sich die gesamte Datei nach dem Herunterladen unterscheidet. Es beginnt mit "‰ PNG", aber die endgültige Datei beginnt mit "X89PNG", als ob sie auf eine komische Art und Weise codiert wäre ...

Irgendwelche Anhaltspunkte?

Edit: Ich hatte this post gefunden, vor denen sieht ähnlich aus, aber die Antwort funktioniert nicht für mich. Meine Dateien haben die gleiche Größe vor dem Upload und nach dem Download, nur der Inhalt, der anders codiert ist ...

Auch das Problem tritt nur bei Image-Dateien. Pdf, zip, docx oder Textdateien sind in Ordnung.

+1

Mögliches Duplikat [Datei beschädigt, wenn klicken Download-Link] (http://stackoverflow.com/questions/7621565/file-corrupt-when-click-download-link) – Arun

Antwort

0
<?php 

header('Content-Type: "'.$mime.'"'); 
header('Content-Disposition: attachment; filename="'.$filename.'"'); 
header("Content-Transfer-Encoding: binary"); 
header('Expires: 0'); 
header('Pragma: no-cache'); 
header("Content-Length: ".strlen($data)); 
exit($data); 
$data = file_get_contents('your image url') 

?> 
+0

Noch gleichen Ergebnis in meinem Fall. .. – SirPsycho

+0

Wenn Sie eine Antwort geben, erklären Sie bitte Ihren Code und erklären Sie den Grund, warum er sich unterscheidet, damit Sie auf den Fehler hinweisen können und wir insgesamt die Chance haben, etwas zu lernen. – Lepidopteron

Verwandte Themen