PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : upload


Gweilo
12.11.2002, 23:02:07
Ich habe eine frage zum uploaden.. lässt sich ein upload abbrechen, bevor er angefangen hat? (wohl unverständlich, was? *g*)

Was ich damit meine, zeige ich am besten an einem praktischen Beispiel:
- Ein formular mit File input-feld
- Bei submit wird die Datei hochgeladen
- Der User muss warten. nach dem hochladen wird das ergebnis gezeigt.
- Wenn die Datei ein limit überschritten hat (zB 300kb), muss der user eine neue (kleinere) datei wählen und erneut hochladen.

lässt es sich nun bevor das formular abgeschickt wurde überprüfen, wie gross die datei ist, damit er nicht vergeblich warten muss?

overclocker
12.11.2002, 23:58:24
ööhmm.. ich versuchs mal ;)
sagen wir mal du hast in deinem Formular irgendwo folgendes geschrieben:
<input type=file name="dateiname" size=60 maxlength=1000000>
(eigentlich könnte man ja schon in maxlength angeben, wie groß die Datei maximal sein darf.. aber das klappt nicht immer, da dafür der Browser zuständig ist)

dann kannst du (leider erst nachdem die Datei übertragen wurde) mit der Variable $dateiname_size die Größe (in Bytes ;) )
abrufen.. ob die datei dann größer ist als 300kb kannst du ja dann mit IF prüfen.
Das einzige Problem ist leider, dass die Datei zuerst in ein Temporäres Verzeichnis (das in der php.ini festgelegt wird) übertragen wird und erst von dort aus die Dateigröße geprüft wird..

cu

Gweilo
13.11.2002, 12:20:59
jo. das mit dem abfragen nachher hatte ich ja... aber wie du sagst, hab ich das problem, dass es ja erst auf den temporären ordner geladen wird.. naja. mach ich halt noch dazu das maxlength rein

doudie
13.11.2002, 14:03:50
also die Datei ist zuerst in einem Temporären Ordner ...
OK, dann kopiere ich sie halt ....

aber bei mir klappt es nicht mit

$datapth="./data/files/";
copy ($dateiname,$datapth);

Die Fehlermeldung: "Warning: open_basedir restriction in effect. File is in wrong directory"

(wie kann ich den Temp-Path herausfinden, wenn ich selber keinen Zugrif auf die php.ini habe)

doudie
28.11.2002, 01:45:15
Problem gelöst! ... wenn ich die Scrip-Datei (folgender Code) in das Upload-Verzeichnis "files" lade dann funktionierts ...

<?
if (!$maches)
{
echo "<form enctype="multipart/form-data" name="formnup1" method="post" action="$PHP_SELF"> rn";
echo "<br> rn";
echo "<br>Datei: rn";
echo "<br><input class="text2" type="file" name="freshfile"> rn";
echo "<br> rn";
echo "<input type="hidden" name="MAX_FILE_SIZE" value="1000"> rn";
echo "<input type="hidden" name="maches" value="ok"> rn";
echo "<input type="submit" value="UPLOAD"> rn";
echo "<br></form> rn";
echo "<br> rn";


}
else
{

copy ($freshfile,"files/".$freshfile_name);

echo "<br>Die Datei: $freshfile_name wurde hochgeladen. <br>rn";

?>

Gweilo
28.11.2002, 09:23:28
ne. das ist schon klar, wie man sie hochlädt. die frage war, wie man das hochladen verhindert, falls die datei zu gross ist zB. Denn soweit ich weiss ist das erkennen der grösse der datei erst möglich wenn es bereits hochgeladen wurde, deshalb die frage, ob es möglich sei das irgendwie vorher schon zu erkennen.

MiH
28.11.2002, 09:32:42
die datei wird immer hochgeladen. du kannst erst auf dem server die größe prüfen und dann gegebenfalls mit $_FILES["userdatei"]["size"] reagieren.

Gweilo
28.11.2002, 21:20:00
genau das wollte ich wissen, danke =)