Ich habe ein PHP Script welches hochgeladene Dateien zum download anbietet.
Ich habe Probleme wenn Bilddateien hochgeladen werden, egal ob .jpg .gif. etc: Nach dem Download sind die Bilddateien beschädtig -> Keine Vorschau verfügbar. Auch .msi oder .exe Dateien sind nicht ausführbar/beschädigt.
.pdf Dateien zb. lassen sich nach dem Download komischerweise problemlos ausführen.
Ich habe mal eine heruntergeladene .png Datei mit einem Hex-Editor angesehen und herausgefunden das zusätzlich zwei Hex Werte mit dem Download mitgegeben werden.
Denn PNG-Dateien starten immer mit 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A. Das ist die Erkenntnis aus der Hexeditor-Nummer. Bei mir steht was davor, und das ist für meine Probleme verantwortlich.
Das ist das Download Script:
Wenn ich die hochgeladene Datei direkt vom Zielverzeichnis manuell herunterlade funktioniert es. Also es liegt an diesem Script. Nur an was?
Ich habe Probleme wenn Bilddateien hochgeladen werden, egal ob .jpg .gif. etc: Nach dem Download sind die Bilddateien beschädtig -> Keine Vorschau verfügbar. Auch .msi oder .exe Dateien sind nicht ausführbar/beschädigt.
.pdf Dateien zb. lassen sich nach dem Download komischerweise problemlos ausführen.
Ich habe mal eine heruntergeladene .png Datei mit einem Hex-Editor angesehen und herausgefunden das zusätzlich zwei Hex Werte mit dem Download mitgegeben werden.
Denn PNG-Dateien starten immer mit 0x89 0x50 0x4E 0x47 0x0D 0x0A 0x1A 0x0A. Das ist die Erkenntnis aus der Hexeditor-Nummer. Bei mir steht was davor, und das ist für meine Probleme verantwortlich.
Das ist das Download Script:
PHP-Code:
<?php
include_once("../upload/online.php");
$hash = $_GET['hash'];
$sql = "SELECT link FROM links WHERE hash = '".$hash."';";
$query = mysql_query($sql);
$result = mysql_fetch_assoc($query);
$url = $result['link'];
$ext = "SELECT filetype FROM links WHERE hash = '".$hash."';";
$query = mysql_query($ext);
$result = mysql_fetch_assoc($query);
$filetype = $result['filetype'];
$dir = "../upload/";
if ((isset($url))&&(file_exists($dir.$url))) {
header("Content-type: octet/stream");
header("Content-length: ".filesize($dir.$url.$filetype));
header('Content-Disposition: attachment; filename="download.'.$filetype.'"');
readfile("$dir$url");
} else {
echo "No file selected";
}
?>
Kommentar