2010-11-19 7 views
0

Mein PHP-Buch für das Hochladen einer Datei eine Vorlage in HTML Form gibt:HTML-Formular für PHP Datei-Upload: keine Textbox

<form action="upload.php" method="post" enctype="multipart/form-data"/> 
    <div> 
     <input type="hidden" name="MAX_FILE_SIZE" value="10000000"/> 
     <label for="userfile">Upload a file:</label> 
     <input type="file" name="userfile" id="userfile"/> 
     <input type="submit" value="Send File"/> 
    </div> 
</form> 

Das Buch zeigt es als "Datei hochladen:" [Textbox] [Durchsuchen .. .] [Datei senden]

ich es wörtlich kopiert, und das Ergebnis, das ich bin immer ist „eine Datei hochladen:“ [wählen sie Datei] „keine Datei ausgewählt“ [Datei senden]

ich frage mich, warum die Diskrepanz existiert. Gibt es einen Weg dahin? Ich benutze XHTML Transitional. In dem Buch ist kein Doctype angegeben. Aber ich bezweifle, dass das das Problem ist.

Das Skript, das ich schreibe, zielt darauf ab, die Datei zu nehmen, die der Benutzer wählt, zu verarbeiten und das Ergebnis in eine andere Datei zu schreiben, die noch nicht existiert. Ich stelle diese Frage, weil es nützlich wäre, den Benutzer den ursprünglichen Dateipfad/-namen leichter kopieren zu lassen, ihn in das andere Feld einzufügen und nur einen Teil davon zu ändern.

(Auch: warum der Unterschied zwischen "Durchsuchen ..." und "Datei auswählen"? Ich habe versucht, den Wert des Feldes "userfile" auf "Durchsuchen ..." manuell einzustellen, aber nichts passiert. Das ist weniger wichtig aber ich bin trotzdem neugierig.)

Antwort

2

Es zeigt wahrscheinlich einen anderen Browser und/oder eine andere Version.

Es klingt wie Sie es unter Safari betrachten und das Buch hat Screenshots von IE, zum Beispiel.

Es gibt ein paar Möglichkeiten, die vollständige Kontrolle über das Hochladen von Dateien und das <input type="file" /> Element zu erhalten. Sie können Flash verwenden, oder Sie können input auf opacity: 0 setzen und dann darunter positionieren, was Sie wollen.

+0

Das ist genau das. Shoulda testete es in anderen Browsern vor dem Posten ... Vielen Dank! – user460847

+0

@ user460847 Keine Sorgen, fühlen Sie sich frei, mich zu akzeptieren :) – alex

+0

Haha, als ich zuerst antwortete, sagte mir, dass ich warten soll ... da gehst du – user460847

0

Vor einiger Zeit haben die Browser-Engines fast vollständige Kontrolle über die Eingabeart = "Datei" - Felder übernommen, da es heutzutage als Sicherheitsproblem angesehen wird. In den Tagen davor könnte man einfach das Dateieingabefeld mit einem Pfad und einem Dateinamen (zB sowas wie/etc/passwd) vorfüllen und das Feld ausblenden, also würde man das Formular nicht senden, dass man die Datei auch sendet. .. Deshalb könnte man zum Beispiel den Dateinamen eines solchen Feldes nicht voreinstellen, und deshalb machen Browser jetzt alle ihr eigenes Ding mit diesen speziellen Eingabefeldern. Wie Alex oben gesagt hat, könntest du das umgehen, aber es wird etwas mühsam sein, weil es bedeuten würde, das Dateieingabefeld zu "fälschen".