Fileupload
Regenbogenjonny
Hallo,
beim Upload eines PDF wird mir seltsamerweise die Meldung ausgegeben, dass diese eine "application/x-octet-stream" Datei wäre.
Das stimmt aber gar nicht mit der Liste aus dem Link hier überein. Hier wird gesagt, dass dieser Mimetyp einer ausführbaren Datei entspricht.
Was tun?
Wenn ich den Mimetyp freigebe, gebe ich auch ausführbare Dateien frei, ich will aber nur PDFs freigeben.
Jonny
Tach,
beim Upload eines PDF wird mir seltsamerweise die Meldung ausgegeben, dass diese eine "application/x-octet-stream" Datei wäre.
Das stimmt aber gar nicht mit der Liste aus dem Link hier überein. Hier wird gesagt, dass dieser Mimetyp einer ausführbaren Datei entspricht.
Das stimmt nicht so ganz; habe es im Wiki gerade angepasst; x-octet-stream ist einfach nur eine Binärdatei, das kann ein Programm sein, aber auch etwas ganz anderes und wird im zweifelsfall als Fallback verwendet.
Was tun?
Ich gehe davon aus, dass PHP da nach Magic Numbers u.ä. schaut und die Datei nicht mit dem für PDF vorgeschriebenen Header „%PDF“ beginnt (das kann man z.B. mit einem Hexeditor nachschauen (25 50 44 46 sollte der Beginn der Datei sein)); je nach PDF-Anzeigeprogramm kann man die Datei dann auch noch ansehen, aber im Prinzip ist sie kaputt.
mfg
Woodfighter
Hi,
beim Upload eines PDF wird mir seltsamerweise die Meldung ausgegeben, dass diese eine "application/x-octet-stream" Datei wäre.
Das stimmt aber gar nicht mit der Liste aus dem Link hier überein. Hier wird gesagt, dass dieser Mimetyp einer ausführbaren Datei entspricht.
Das stimmt nicht so ganz; habe es im Wiki gerade angepasst; x-octet-stream
application/octet-stream. Kein x-.
cu,
Andreas a/k/a MudGuard
Das stimmt nicht so ganz; habe es im Wiki gerade angepasst; x-octet-stream
application/octet-stream. Kein x-.
Na, bei mir aber eben wohl mit x. Ich habs gesehen, im Wiki ohne... aber bei mir kommts inkl. dem X
Jonny
Tach!
beim Upload eines PDF wird mir seltsamerweise die Meldung ausgegeben, dass diese eine "application/x-octet-stream" Datei wäre.
Wie hat man sich das genau vorzustellen? Bei mir hat die Natur keine Upload-Möglichkeit vorgesehen ...
Oder ernsthafter: Du musst schon etwas mehr Worte verlieren, mit welchen Systemen du konkret was versuchst. "bei mir" ist nicht ausreichend, um dir eine fundierte Antwort geben zu können.
dedlfix.
Oder ernsthafter: Du musst schon etwas mehr Worte verlieren, mit welchen Systemen du konkret was versuchst. "bei mir" ist nicht ausreichend, um dir eine fundierte Antwort geben zu können.
Hi dedlfix.
hast ja recht.
Ich lade per php-form etwas hoch und durchsuche dann das $_FILE Array.
<form action="script.php" method="post" enctype="multipart/form-data" accept-charset="utf-8">
und dann
$lenght = count($_FILES['files']['name']);
for($i = 0; $i < $lenght; $i++) {
if ( $_FILES['files']['name'][$i] <> "" )
{
$zugelassenedateitypen = array("image/png", "image/jpeg", "image/gif", "application/save");
if ( ! in_array( $_FILES['files']['type'][$i] , $zugelassenedateitypen ))
{
echo "<p>Dateitype (".$_FILES['files']['type'][$i].") ist NICHT zugelassen</p>";
}
Jonny
Tach!
Ich lade per php-form etwas hoch und durchsuche dann das $_FILE Array.
Dann bekommst du das zu sehen, was der Browser dir vorschwindelt. Schau lieber selbst mit fileinfo nach.
dedlfix.
Tach!
Ich lade per php-form etwas hoch und durchsuche dann das $_FILE Array.
Dann bekommst du das zu sehen, was der Browser dir vorschwindelt. Schau lieber selbst mit fileinfo nach.
Ist wahr? Der Browser macht das? Oweh.
Ich schau mal in fileinfo rein... hat php 5.5 das serienmäßig drin?
Jonny
Dann bekommst du das zu sehen, was der Browser dir vorschwindelt. Schau lieber selbst mit fileinfo nach.
Hm... werd' ich nicht ganz schlau draus. Ich würde gerne die Funktion "mime_content_type" hieraus nutzen, aber die Doku sagt, sie sei veraltet und linkt mich auf die Fileinfo Funktionen. In denen finde ich dann wieder das, was ich anwenden würden, nämlich die Funktion "mime_content_type". Ich dreh' mich also im Kreis, oder?
Jonny
Tach!
Ich würde gerne die Funktion "mime_content_type" hieraus nutzen, aber die Doku sagt, sie sei veraltet und linkt mich auf die Fileinfo Funktionen. In denen finde ich dann wieder das, was ich anwenden würden, nämlich die Funktion "mime_content_type".
Du musst die anderen Funktionen daraus nehmen, oder die objektorientierte Variante:
$finfo = new finfo(FILEINFO_MIME);
$mimeType = $finfo->file($filename);
dedlfix.
Hi dedlfix,
Du musst die anderen Funktionen daraus nehmen, oder die objektorientierte Variante:
$finfo = new finfo(FILEINFO_MIME); $mimeType = $finfo->file($filename);
Danke für Deine Hilfe. Muß ich morgen machen, heut' raff ich nicht mehr wirklich viel :-/
$finfo = new finfo(FILEINFO_MIME);
$mimeType = $finfo->file($_FILES['files']['name'][$i]);
echo("<br>23:15:02: ----> ".$mimeType."<br>");
hat mir lediglich
23:15:02: ---->
ausgespuckt :-(
Liegt vielleicht an der Uhrzeit...
Jonny
Tach!
$mimeType = $finfo->file($_FILES['files']['name'][$i]);
Der Dateiname der temporären Datei (inklusive Pfad zu ihr) steht in tmp_name. name ist nur der Name der Datei, wie der Browser ihn mitschickt und verweist (hoffentlich) nicht auf eine bei dir existierende Datei.
dedlfix.
Der Dateiname der temporären Datei (inklusive Pfad zu ihr) steht in tmp_name. name ist nur der Name der Datei, wie der Browser ihn mitschickt und verweist (hoffentlich) nicht auf eine bei dir existierende Datei.
Hi dedlfix.
Natürlich. Da hätt' ich drauf kommen sollen. Danke. Und nein, name verweist nicht auf eine existierende Datei. Ich will ja gerade im Zwischenschritt zum Kopieren aus dem temp-Verzeichniss in ein Verzeichniss unterhalb des htdocs die Prüfung durchführen.
Also meine Reihenfolge: Upload --> tmp_verz --> Prüfung --> move_uploaded_file
Jonny
Lieber Regenbogenjonny,
und? Zeigt Dir PHP jetzt den MIME-Typ "application/pdf" an, oder nicht?
Liebe Grüße,
Felix Riesterer.
Hallo Felix,
ja, jetzt erhalte ich
12:15:02: ----> application/pdf; charset=binary
als Ausgabe.
Jonny