php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.08.2004, 14:15  
Gast
 
Beiträge: n/a
Standard Upload von Dateien

Hallo erst mal,

habe folgendes Problem, ich möchte mehrere Dateien uploaden dies ist aber gleichzeitig mit mehreren input-Feldern verbunden, was ich eigentlich nicht bevorzuge.

Jetzt habe ich mir gedacht eine Datei nach der anderen up zu loaden. Da dies nicht so möglich ist weil die Dateien überschrieben werden habe ich mir folgendes gedacht und zwar das ich mit einer for-Schleife immer eine Zahl an den Dateinamen anhänge z.B. xxxxx_1, xxxxx_2, usw. Nach jedem Upload soll also um eine Zahl nach oben gezählt werden.
Habt ihr eine Idee?

Mein Upload sieht folgednermaßen bisher aus:

Code:
<form
  action="<?php echo $_SERVER['PHP_SELF']; ?>"
  method="post"
  enctype="multipart/form-data">
  <table border="0" align="center">
  <tr><td  width="15%">Upload:</td>
  <td><input type="file" name="file"></td>
  <td><input type="submit" name="upload" value="Upload"></td></tr>
  </table>
</form>

<?php
    if (isset($_FILES['file']) and ! $_FILES['file']['error']) {
        for($a=0;$a<16;$a++) {
    
        $xxxx_a=$xxxx;
        $xxxx_a.=_;
        $xxxx_a.=$a;
    
        move_uploaded_file($_FILES['file']['tmp_name'], "htdocs/$xxxx/$xxxx_a.doc" );
  echo "Die zu übersetzende Datei steht jetzt als $xxxx_a.doc zur Verfügung.
\n Die Datei ", $_FILES['file']['name'];
   echo " ist ", $_FILES['file']['size'];
   echo " Bytes groß und vom Typ ", $_FILES['file']['type'];
      }
   }
      else {
             echo("Es konnte kein Auftrag upgeloaded werden");
             echo($_FILES['file']['name']);
             echo($_FILES['file']['error']);
        }
?>
Bis jetzt verschiebt der Code die Datei in das oben genannte Verzeichnis und benennt diese xxxx_0.doc, dies liegt aber daran das ich $a wieder auf null setze. Gibt es hier eine Möglichkeit das $a sich auf den Wert 1 setzt z.B. über session?
Desweiteren gibt er die for Schleife komplett aus da der break-Befehl fehlt.

Bin dankbar für jede brauchbare Hilfe von euch!
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.08.2004, 14:30  
Gast
 
Beiträge: n/a
Standard

nimm ne session, speicher da die zahlen rein, und zähl die dann immer artig
eins hoch nachdem eine datei hochgeladen wurde.
 
Alt 30.08.2004, 14:35  
Gast
 
Beiträge: n/a
Standard

Hab ich mir fast gedacht dass das mit sessions zu machen ist problem ist nur sollte man mal vergessen haben eine Datei in das angegebene Verzeichnis zu laden wird die Datei wieder überschrieben!
 
Alt 30.08.2004, 15:12  
Gast
 
Beiträge: n/a
Standard

Das mit der Session dürfte kein Problem sein "hoffe ich zumindest :-}".

Jetzt hab ich aber festgestellt das ich nach dem ich die zweite Datei hochladen will folgende Fehlermeldung mir entgegen strahlt:

Code:
Warning: move_uploaded_file(htdocs/556644/556644_0.doc): failed to open stream: No such file or directory in D:\Programme\xampp\htdocs\uber\checkupload.php on line 34

Warning: move_uploaded_file(): Unable to move 'C:\TEMP\php5B.tmp' to 'htdocs/556644/556644_0.doc' in D:\Programme\xampp\htdocs\uber\checkupload.php on line 34
Kann mir da vielleicht jemand weiter helfen???
 
Alt 30.08.2004, 15:14  
Gast
 
Beiträge: n/a
Standard

naja, steht ja da .. unable to move .. schreibgeschützt? oder überhaupt
nicht vorhanden? wie ist denn der chronologische ablauf deiner upload-
geschichte? denkbar wäre auch einfach, dass er so lange checkt ob es
ne datei gibt, bis er nen freien dateinamen gefunden hat. während sich
die dateinamen aus [alter dateiname]_[zahl].[endung] zusammen setzen.
dann kann man sich das manuelle hochzählen sparen.
 
Alt 30.08.2004, 15:28  
Gast
 
Beiträge: n/a
Standard

Schreibgeschützt kann nicht sein da ich zuvor schon in das angegebene Verzeichnis schreibe, also muss auch gleichzeitig der Ordner schon vorhanden sein.
Den isset-Befehl hab ich jetzt mal rausgelassen, der Fehler besteht jedoch immer noch.

=>Uploadseite u1 wird aufgerufen
=>Datei wird ausgewählt
=>Datei wird upgeloaded / Ausgabe / Uploadseite u2 wird aufgerufen.
=>Datei wird ausgewählt
=>Datei wird upgeloaded / Ausgabe / Uploadseite u2 wird aufgerufen.
=>usw.
 
Alt 30.08.2004, 15:36  
Gast
 
Beiträge: n/a
Standard

ach und wieso kann nich sein? es laufen zig prozesse im hintergrund, die alle
auf deine datei zugriff haben könnten

ich würd das einfach mal vergleichen .. browserfenster und explorer neben
einander aufmachen, schauen wann die datei erstellt wird un schauen wann
sie verschwindet. das wäre mal interessant zu wissen, ob die datei überhaupt
noch da ist, oder ob die verschoben / gelöscht wurde.
 
Alt 30.08.2004, 16:16  
Gast
 
Beiträge: n/a
Standard

Hab jetzt die Dateien so geändert:

U1
Code:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
      <title>Laden Sie nun die gewünschten Dateien in das Auftragsverzeichnis</title>
      <link rel=stylesheet type="text/css" href="navigation.css">
</head>
<?php
session_start();
include ("navigationTop.inc")
?>
<body>
<form
  action="checkupload2.php"
  method="post"
  enctype="multipart/form-data">
<table border="0" align="center">
<tr><td  width="15%">Upload:</td>
<td><input type="file" name="file"></td>
<td><input type="submit" name="upload" value="Upload"></td></tr>
</table>
</form>

<?php

    for($a=0;$a<16;$a++){
    
    $auftragsnr_a=$auftragsnr;
    $auftragsnr_a.=_;
    $auftragsnr_a.=$a;
    session_register($auftragsnr_a);
    
       move_uploaded_file($_FILES['file']['tmp_name'], "htdocs/$auftragsnr/$auftragsnr_a.doc" );
       break;
   }
          echo "Die zu übersetzende Datei steht jetzt als $auftragsnr_a.doc zur Verfügung.
\n Die Datei ", $_FILES['file']['name'];
          echo " ist ", $_FILES['file']['size'];
          echo " Bytes groß und vom Typ ", $_FILES['file']['type'];

?>

</body>
</html>
U2
Code:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
      <title>Laden Sie nun die gewünschten Dateien in das Auftragsverzeichnis</title>
      <link rel=stylesheet type="text/css" href="navigation.css">
</head>
<?php
session_start();
include ("navigationTop.inc")
?>
<body>
<form
  action="<?php echo $_SERVER['PHP_SELF']; ?>"
  method="post"
  enctype="multipart/form-data">
<table border="0" align="center">
<tr><td  width="15%">Upload:</td>
<td><input type="file" name="file"></td>
<td><input type="submit" name="upload" value="Upload"></td></tr>
</table>
</form>

<?php
echo("$auftragsnr");


    for($a;$a<16;$a++){
        session_register($a);

    $auftragsnr_a=$auftragsnr;
    $auftragsnr_a.=_;
    $auftragsnr_a.=$a;
    
       move_uploaded_file($_FILES['file']['tmp_name'], "htdocs/$auftragsnr/$auftragsnr_a.doc" );
       break;
   }
          echo "Die zu übersetzende Datei steht jetzt als $auftragsnr_a.doc zur Verfügung.
\n Die Datei ", $_FILES['file']['name'];
          echo " ist ", $_FILES['file']['size'];
          echo " Bytes groß und vom Typ ", $_FILES['file']['type'];

?>

</body>
</html>
Der Fehler besteht leider immer noch, bitte noch mal's um Hilfe

Zitat:
ich würd das einfach mal vergleichen .. browserfenster und explorer neben
einander aufmachen, schauen wann die datei erstellt wird un schauen wann
sie verschwindet. das wäre mal interessant zu wissen, ob die datei überhaupt
noch da ist, oder ob die verschoben / gelöscht wurde.
Sorry, aber was meinst du damit?
Wenn die Datei upgeloaded wird wird sie in C:\Temp geladen und dann in den entsprechenden Ordner verschoben. Danach ist die Datei im Temp Verzeichnis gelöscht. Und so schnell bekomm ich den Explorer nicht aktualisiert! Oder hab ich dich da falsch verstanden???
 
Alt 16.09.2004, 09:37  
Gast
 
Beiträge: n/a
Standard

Also ich hab das Problem jetzt in den Griff bekommen.
Jetzt hätte ich aber noch eine weitere Frage und zwar was muss ich tun damit die Datei welche der User hochläd auch im selben Format bleibt??

Zum Beispiel:
Der User möchte eine *.ppt Datei hochladen, jetzt sollte diese Datei als solche auch hochgeladen werden.

Ich hab die Endung jetzt mal weggelassen die Datei wird aber nicht im selben Format hochgeladen.
Hoffe ihr könnt mir helfen!
 
Alt 16.09.2004, 10:00  
Gast
 
Beiträge: n/a
Standard

wie soll ne datei im gleichen format hochgeladen werden wenn du die endung
weg lässt?

eigentlich doch kein ding, die datei einfach so hoch zu laden und ihr die gleiche
endung zu verpassen? die vom orginal dateinamen mit pathinfo() auslesen und
an den neuen dran setzen ..

fertig isses
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bitte um Hilfe - PHP upload mehrere Dateien ich_bin_es PHP Tipps 2008 5 18.07.2008 17:17
Bitte um Hilfe - PHP upload mehrere Dateien ich_bin_es PHP Tipps 2008 4 18.07.2008 17:01
PHP Dateien verschlüsseln GSJLink PHP-Fortgeschrittene 2 26.04.2008 12:29
[Logik] Mehrere Dateien als Anhang per Formular versenden PsychoEagle PHP Tipps 2008 2 27.08.2007 08:58
File Upload für dateien größer als 1GB b++ PHP Tipps 2006 14 08.02.2006 21:59
Upload Kevin PHP Tipps 2005-2 5 13.10.2005 21:19
Dateien löschen (mit "unlink") PHP Tipps 2005-2 8 09.06.2005 22:55
Temporäre Dateien von Upload löschen? oder doch nicht... zwelch PHP Tipps 2004-2 4 26.12.2004 19:50
[Erledigt] Datei Upload! alle Dateien zulassen PHP Tipps 2004 8 08.11.2004 20:15
[Erledigt] Dateien aus Verzeichnissen vom Webserver auslesen und linken PHP Tipps 2004 3 08.09.2004 10:07
upload mehrere dateien chief-thomson PHP Tipps 2004 5 26.08.2004 17:00
Problem beim Upload mehrerer Dateien per Script PHP Tipps 2004 1 04.08.2004 16:26
Mimetyp bei upload von größeren Dateien PHP Tipps 2004 3 29.07.2004 11:33
Löschen von Dateien suendesizer PHP Tipps 2004 0 16.06.2004 14:50

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php wie temporäre dateinamen ermitteln während des uploads, upload schreibgeschützt, php hochzählen überschreiben, datei schreibgeschützt hochladen, php dateiname hochzählen upload, jedem upload eine zahl einfügen, schreibschutz $_files, php datei hochladen nicht überschreiben hochzählen, type file $_files, doc nach upload schreibgeschützt, session_start(); $datei = $_files[\'datei\'][\'name\'];, datei aus temp löschen beim upload über form

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.