Ordner mit PHP erstellen

Begonnen von Kartoffelbrei, 22 September 2003, 09:54:54

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Kartoffelbrei

servus !
will eine file uploaden und die daten dann in einer db speichern.

habe schon sowas gefunden wo auch den namen umändert damit es keine doppelten einträge gibt ! das is echt suppi !!!!!
jedoch will ich jetzt dass der eigentliche name meines bildes gleich bleibt und nur der ordner umbenannt wird.

also im moment siehts dann aufm server so aus : /test/upload/imgk1234abf.gif
und ich will dass es so aussieht : /test/upload/imgk1234abf/meine_famile.gif

dazu müsste man ja dann in den code einbinden dass er den ordner erstellt.
aber wie ?

hier ist mal der code :





    <?php
    /*
       Upload that file! ver 2.0
       bmgx 2002
       ----------------------------------------
       Out of pure neccessity, none of the other
       upload scripts ever worked on my linux server..
       A PHP script which uploads multiple files to a
       specified folder, gives them a unique name,
       and adds their new names to a MySQL database
       In the same record field, separated by a space.
       TestTable:
          +----+----------+--------------+
          | id | filename | description |
          |====|==========+===============
          || | |
          +----+----------+--------------+
       It checks the file mime-type, so even
       if a cunning user renames their file extension
       it'll point their cunning a$$ right back at them ..
       You can also specify the size limit you
       will allow to be uploaded.
       
       You can name this file to anything you please.
    ----------------------------------------
        CONFIGURE THESE SETTINGS
    ----------------------------------------*/
    #The directory you want to upload to:
    $uploaddir = "/home/yourname/whatever/";
    #The maximum file size you will allow to be uploaded (PHP default is 2mb Max):
    $MaxSize = "600000";
    #Database server hostname:
    $dbhostname = "something.com";
    #Database username:
    $dbusername = "user";
    #Database password:
    $dbpassword = "pass";
    #Database name:
    $dbname = "yourdb";
    #You may want to move this dection into the execSQL section below..
    #I think it's better to recieve a MySQL connection error before wasting time browsing for files..
    #Connect to the database:
    $db = mysql_connect($dbhostname, $dbusername, $dbpassword);
    mysql_select_db($dbname, $db) or die("ERROR: Cannot connect to the database, check script configuration");
    //--------------------------------------
    //    
    // -----
    function execSQL($strSQL_filenames)
    {
       if (!$strSQL_filenames == 0)
       {
          $query = "INSERT INTO TestTable (id, filename,description) VALUES (NULL,'$strSQL_filenames',NULL)";
          #echo "$query";
       $result = mysql_query($query) or die("ERROR: cannot INSERT data into database, check your permissions");
       }
       else
       {
          echo "NOTE: Please select a file to upload";
       }
    }
       
    #check the number of files selected
    $number_of_files = count($_FILES['userfile']);
    #PUT EACH FILE THROUGH THIS LOOP SEPERATELY
    for($i=0;$i<=$number_of_files;$i++) {
    #The format you want your new file to have
    #(You will probably want to leave this as it is)
    $filename_format = uniqid(img);
    #if the filesize is greater the 0 bits or bytes or something, continue with upload..
    if (!$_FILES['userfile']['size'][$i] == 0)
    {
       #If the user tries to upload something larger than you specified, stop it, then tell them..
        if ($_FILES['userfile']['size'][$i] > $MaxSize)
       {
          echo "ERROR: Whoa! that's a big one alright! ..too big";
          echo "<br><a href='" . $_SERVER['SCRIPT_NAME'] ."'>Let me try that again..</a>";
          exit;
       }
       
       #declare var for temp file
       $tempfile = $_FILES['userfile']['tmp_name'][$i];
       #declare var file to be uploaded
       $uploadfile = $_FILES['userfile']['name'][$i];
       
       #I disabled this feature as it was getting in the way during testing.
       #file description
       #$file_description = $_POST['description'];
       
       #find out filetype so we can append the extension
       #after we rename the file.(probably 101 better ways to do this)
       $extension = $_FILES['userfile']['type'][$i];
          #add your own filetypes here!
          if (strstr($extension,"jpeg"))
          {
             $extension=".jpg";
          }
          elseif (strstr($extension,"gif"))
          {
             $extension=".gif";
          }
          else
          {
             #If someone uploaded an 'unspecified' filetype, then tell them for goodness sake..
             #..and give them another chance.. ..you can flogg them the next time though...
             echo "ERROR: That type of file is not allowed. only gif/jpeg allowed.";
             echo "<br><a href='" . $_SERVER['SCRIPT_NAME'] ."'>Let me try that again..</a>";
             exit;
          }   
          
       #copy the temp file to the specified dir
       if(copy($tempfile, $uploaddir.$uploadfile))
       {
          echo "Copy Successfull!<br>";
       }
       else
       {
          echo "ERROR: something happened whilst trying to copy the temp file to the specified folder";
       }
       
       #rename the file and append the correct extension
       if(rename($uploaddir.$uploadfile,$uploaddir.$filename_format.$extension))
       {
          #all went well, tell the user that..
          echo "The File: " . $_FILES['userfile']['name'][$i] . " was uploaded successfully";
          echo " and renamed to $filename_format$extension";
       }
       else
       {
          #NOPE! something happened along the lines of rename()..
          echo "ERROR: Problem renaming the file.. $uploadfile";
       }
       
       echo "<p>";
       
       if($i=="0")
       {
          $strSQL_filenames = "$filename_format$extension";
       }
       elseif($i>0)
       {   
          #keep on adding filenames to the $strSQL_filenames string.
          $strSQL_filenames = $strSQL_filenames . " $filename_format$extension";
       }
       
    }   
       
          #Execute SQL after were finished the loop
          if($i==$number_of_files)
          {
             execSQL($strSQL_filenames);
             if($strSQL_filenames)
             {
                echo "The following data was entered into the database: \"" . $strSQL_filenames ."\"";
             }
          
       }
    }   
    ?>
    <html>
    <head>
    <title>Upload That File!</title>
    </head>
    <body>
       <form name="form1" action="<?=$_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
          <input type="file" name="userfile[]" style="width:300;"><br>
          <input type="file" name="userfile[]" style="width:300;"><br>
          <input type="file" name="userfile[]" style="width:300;"><br>
          <input type="file" name="userfile[]" style="width:300;"><br>
          <input type="submit" value="Upload/Submit">
       </form>
    </body>
    </html>


BowlingX

tjoar...dann musste noch ne pasage schreiben welche den Ordner per zufall z.B generiert! (z.B so: $zufall = rand(10,2000);) Das Beispiel würde eine Zufallszahl zwischen 10 und 2000 rechnen und es der Variable $zufall zuweisen.

Einen Ordner erstellst du per mkdir (Bsp: mkdir ("/pfad/$zufall", 0700);
Den Rest solltest du eigentlich hinbekommen...
 
Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!

Kartoffelbrei

Hi !

also das mit dem random ist nicht so gut glaub ich.
denn es geht darum dass ordner nur einmal existieren darf
also sprich es werden später 2 dateien hochgeladen. und die kommen in einen EINZIGARTIGEN ordner.
der zweck von dem ganzen ist dass die datei die hochgeladen werden kann evtl schon vorhanden sein kann.
drum will ich eindeutige ordner machen wo die files dann imemr reinkommen.
somit umgehe ich ein überschrieben und das eigentliche umbenenen der datei.
wäre auch nicht schlecht wenn der ordner hochgezählt wird
irgendwie nen fetch machen und dann id = id + 1
aber in php kann ich das alles nicht.
mit vb oder C++ kein thema aber in php muss ich halt noch vieles lernen.

also viel gelaber... fakt ist dass wenn ich doch random bei der ordnererstellung mache (make directory =MD) dann kann es ja sein das jemand seine daten in einen bereits bestehenden ordner hochläd und das wäre fatal !

gruß
brei

BowlingX

jo..das passiert doch dann! Wenn du den Ordner als Name "Zufällig" (sprich random) wählst..genau das macht die Funktion rand()! Dann gibt es jeden Ordner Einzigartig! (musst halt nen grossen Bereich nehmen (rand(10,1237127823178912378)) *G*

Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!

Kartoffelbrei

hi nochmal,


wenn aber der ordner 23234234 scho da ist und der den jetzt nochmal erstellen solld ann crasht es doch.
wie geht dass dass ich schaue wieviele datensätze die Tabelle TestTable hat und dann meinen Ordner so benenne ?

also wenn da z.b. 5 Einträge drin sind dann soll mein Ordner den ich jetzt anlegen will  6 heißen.
also dass er quasi immer die laufende nummer zum momentanen datensatz hat....

gruß
brei