datendarstellung beim input type file
cayaphas
- php
Tach,
Ich hab mittlerweile mitgekriegt, das man anscheinend mittels php den dateinamen aus einem input type=file feld nicht herauskriegen kann, bevor die datei auf den server upgeloaded worden ist (z.B. für eine bildvorschau).
jetzt würd mich dringend interessieren, als was für ein datentyp diese eingabe in so nem input type=file - feld gehandelt wird. Kann ich mir das sowie ein filepointer bei C vorstellen?
Oder ist das trotzdem noch ein string, welcher z.B. von der copy-php funktion ausgewertet wird und dann irgendwie zu so ner art filepointer gecastet wird.
aber das kann ja eigentlich nicht sein, da ich ihn mir ja nicht ausgeben lassen kann, weil sowas funktionert ja nicht:
<input name="file" type="file" size="80" > ...
$file_name = isset($_POST['file']) ? $_POST['file'] : "";
echo "$file_name";
Kann ich einen eingetragenen file überhaupt mit isset abfragen?
hi,
jetzt würd mich dringend interessieren, als was für ein datentyp diese eingabe in so nem input type=file - feld gehandelt wird. Kann ich mir das sowie ein filepointer bei C vorstellen?
nein.
die datei wird ins temp-verzeichnis hochgeladen, und dir werden in $_FILES ein paar zusätzliche informationen über die hochgeladene datei bereitgestellt. that's it.
Oder ist das trotzdem noch ein string, welcher z.B. von der copy-php funktion ausgewertet wird und dann irgendwie zu so ner art filepointer gecastet wird.
du solltest dich eingehender mit http://www.php.net/manual/de/features.file-upload.php beschäftigen.
gruß,
wahsaga
tach,
ja schon. Es wird überall erklärt, wie ein dateiupload per post funktioniert und das danach auf dem webserver das autoglobale array $_FILES initialisiert wird das man serverseitig wunderbar auswerten kann.
Es geht mir eigentlich auch mehr um das POST. Wie wertet das POST den in das formularfeld eingegebenen string aus und wieso kann man nicht direkt auf diesen eingabestring zugreifen. Oder ist das schon gar kein string mehr (weil für mich ist eigentlich ne zeichenkette ein string, und sowas steht ja im feld, oder)?
Es geht mir eben um die datendarstellung und die kommunikation zwischen input feld und dem POST. Dazu hab ich bis jetzt noch nichts gefunden.
(ich hoffe ich hab mich einigermassen verständlich ausgedrückt :-) )
gruss
caya
hi,
Es geht mir eigentlich auch mehr um das POST.
warum? damit hast du doch eigentlich gar nichts zu tun, dass ist ein vorgang zwischen client und webserver.
Wie wertet das POST den in das formularfeld eingegebenen string aus
gar nicht. der client entscheidet, was er mit der über das input-feld ausgewählten datei macht, und setzt die informationen dann in einen POST-datenstrom um.
und wieso kann man nicht direkt auf diesen eingabestring zugreifen.
weil der string keiner ist, und weil du mit PHP noch gar nicht im spiel bist, solange wir uns noch auf dem client befinden.
Es geht mir eben um die datendarstellung und die kommunikation zwischen input feld und dem POST. Dazu hab ich bis jetzt noch nichts gefunden.
warum, was genau willst du darüber wissen?
was reicht dir an den informationen die dir _in_ PHP über den upload zur verfügung stehen, nicht?
(ich hoffe ich hab mich einigermassen verständlich ausgedrückt :-) )
nein, dein ziel liegt für mich immer noch weitgehend im dunklen.
gruß,
wahsaga
tach,
gar nicht. der client entscheidet, was er mit der über das input-feld ausgewählten datei macht, und setzt die informationen dann in einen POST-datenstrom um.
genau sowas wollte ich wissen .. :-) ...
und jetzt folgende überlegung von mir:
gehen wir davon aus, ich will eine bildvorschau machen, BEVOR ich die bilder auf den webserver laden will.
Gibt es da die möglichkeit, in ein normales input textfeld mein lokalen pfad zur bilddatei anzugeben (als string natürlich), diesen string dann per php serverseitig auswerten zu lassen,und mir eine vorschau datei zu generieren, wo ich einfach den string zur lokalen bilddatei als bild-source angeben kann. Und dann im falle dass ich die bilder enggültig hochladen will diesen string zu benutzen, um ihn in ein input type-file feld zu setzen, (als voreingestellter value also STRING).
Weisst du jetzt wieso ich wissen will, ob das "ding" im input type-file feld ein string ist oder nicht? z.B. weil ich wissen will, ob es geht das ding in ein textfeld zu schreiben und dann als voreinstellung in ein input type-file feld reinschreiben zu lassen.
gruss
caya
hi,
und jetzt folgende überlegung von mir:
aha, da kommen wir der sache ja schon näher :-)
gehen wir davon aus, ich will eine bildvorschau machen, BEVOR ich die bilder auf den webserver laden will.
Gibt es da die möglichkeit, in ein normales input textfeld mein lokalen pfad zur bilddatei anzugeben (als string natürlich), diesen string dann per php serverseitig auswerten zu lassen,und mir eine vorschau datei zu generieren, wo ich einfach den string zur lokalen bilddatei als bild-source angeben kann.
wer sollte dich an diesem vorgehen hindern wollen :-)
du solltest nur folgendes beachten: wenn du dem benutzer ein input vom type="file" zur _auswahl_ der datei anbietest, dann wird diese auch schon hochgeladen, wenn der benutzer das formular abschickt.
du müsstest also ggf. das file-inputfeld _außerhalb_ des formulares platzieren, damit die datei eben nicht sofort mit hochgeladen wird.
dabei könntest du versuchen, mit javascript das value-attribut des file-feldes auszulesen, und diesen wert in einem (versteckten) feld innerhalb des
formulars zu übertragen. aber vorsicht, nicht alle browser unterstützen m.W. das auslesen des values von datei-feldern.
Und dann im falle dass ich die bilder enggültig hochladen will diesen string zu benutzen, um ihn in ein input type-file feld zu setzen, (als voreingestellter value also STRING).
nein, eben das geht aus sicherheitsgründen nicht. sonst könntest du ja auf diese weise auch jede beliebige datei von meinem rechner aus hochladen, ohne dass ich dies merken würde. das steht übrigens auch schon oftmals im archiv erwähnt.
Weisst du jetzt wieso ich wissen will, ob das "ding" im input type-file feld ein string ist oder nicht?
z.B. weil ich wissen will, ob es geht das ding in ein textfeld zu schreiben und dann als voreinstellung in ein input type-file feld reinschreiben zu lassen.
wie gesagt, ein value-attribut hat es in javascript, aber manipulieren kannst du dieses nicht.
gruß,
wahsaga
tach,
und jetzt folgende überlegung von mir:
aha, da kommen wir der sache ja schon näher :-)
:-) .. methodische heranführung an das problem ..
wer sollte dich an diesem vorgehen hindern wollen :-)
du vielleicht ... deswegen frag ich ja :-) ...
du müsstest also ggf. das file-inputfeld _außerhalb_ des formulares platzieren, damit die datei eben nicht sofort mit hochgeladen wird.
siehste .. an sowas hätte ich jetzt auch nicht wirklich gedacht ...
nein, eben das geht aus sicherheitsgründen nicht. sonst könntest du ja auf diese weise auch jede beliebige datei von meinem rechner aus hochladen, ohne dass ich dies merken würde. das steht übrigens auch schon oftmals im archiv erwähnt.
:-) .. deswegen hab ich erst was anderes gefragt (ok, es war schlecht formuliert) .. ich bin mir sicher, das ich DANACH genau das im archiv gesucht hätte .. GANZ SICHER ... ;-) ..
dank dir auf jeden fall
gruss
caya
Moin!
gehen wir davon aus, ich will eine bildvorschau machen, BEVOR ich die bilder auf den webserver laden will.
Dann scheidet PHP zur Erzielung der Bildvorschau aus. Du kannst mit Javascript den Inhalt des File-Feldes auslesen, versuchen, damit irgendwas anzustellen (beispielsweise den String einer Bild-Ressource als SRC zuzuweisen - man kann ja schließlich auch lokale Bilder einbinden, wenn man denn weiß, wo sie liegen).
Gibt es da die möglichkeit, in ein normales input textfeld mein lokalen pfad zur bilddatei anzugeben (als string natürlich), diesen string dann per php serverseitig auswerten zu lassen,und mir eine vorschau datei zu generieren, wo ich einfach den string zur lokalen bilddatei als bild-source angeben kann.
Wenn PHP dir eine Vorschau generieren soll, muß PHP das Bild haben. Damit PHP das Bild hat, muß es hochgeladen werden. Andernfalls kann PHP nichts generieren.
Und dann im falle dass ich die bilder enggültig hochladen will diesen string zu benutzen, um ihn in ein input type-file feld zu setzen, (als voreingestellter value also STRING).
Wenn das Bild also ohnehin schon hochgeladen ist - warum diese Arbeit zweimal machen lassen?
Weisst du jetzt wieso ich wissen will, ob das "ding" im input type-file feld ein string ist oder nicht?
document.forms[...].elements[...].value ist ein String.
z.B. weil ich wissen will, ob es geht das ding in ein textfeld zu schreiben und dann als voreinstellung in ein input type-file feld reinschreiben zu lassen.
Du kannst keine Vorbelegung bei File-Inputs machen. D.h. du kannst zwar den Value vorbelegen, die allermeisten existierenden Browser ignorieren das aber und erfordern, dass der Benutzer selbst eine Datei auswählt.
- Sven Rautenberg