Viele Fragen zu Datei upload

PHPlehrling

Mitglied
Hi. Ich habe ein Paar fragen zu datei upload
erstens: Die kann ich noch andere dateitypen also z.B. zip hochladen lassen.
-wie kann ich den ordener wählen, in den hochgeladen werden soll
-und wie kann ich es machen, dass pfad zur datei und name usw. in der db gespeichert wird.
- damit verbunden wir kann ich es machen, dass ich den namen der datei im verzeichniss selber verändert im ordner speicher. denn originalnamen aber in der db speicher.(überschneidungsproblem wollte ich dann mit dem hochzählen einer nummer bewältigen.)

PHP:
<?php
$tempname = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name'];
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];
if($type != "image/gif" && $type != "image/pjpeg" && $type != "file/zip") { 
$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "15000") { 
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
} 
if(empty($err)) {
copy("$tempname", "$name");
echo "Die Datei $name wurde erfolgreich hochgeladen!";
}
else {
foreach($err as $error)
echo "$error<br>";
}
?>
 
hier wird die datei im verzeichnis checklisten abgelegt, du kannst hier einfach $newname noch verzeichnisse eingeben...

$newname = "checklisten/".$name;
copy("$tempname", "$newname");

zum speichern des pfads in die db speicher doch einfach $newname als pfad ab... dies könnte meiner meinung nach ca hinkommen ;)
 
ok habe es jetzt soweit, dass er es in die db einträgt und dass er es in nem anderen ordner speichert. nur wie ich das mit dem namen machen kann weiß ich nocht nicht.
Vielleicht kann da noch jemand nen anstoß geben
PHP:
<?php 
require("functions.php");
if(isset($_REQUEST['action'])) $action=$_REQUEST['action'];
else $action="view";
  if($action == "upload") { 
     
    $file=$HTTP_POST_FILES['file']['tmp_name']; 
    $size=$HTTP_POST_FILES['file']['size']; 
    $name=$HTTP_POST_FILES['file'][name]; 
    $type=$HTTP_POST_FILES['file'][type]; 


    if(eregi("(txt|jpg|jpeg|bmp|gif|png|ace|rar|zip)$",$name)) { 
    if($size < 2000000 AND $size!=0) { 
    copy($file,"attachements/$name"); // Kopiert das Bild 
$insert = $db->query("INSERT INTO ibb".$bnr."_attachements (name,type,size,link) VALUES ('$name','$type','$size','attachements/$name')");
         } else { 
      echo "Ihre Datei ist über 2000KB groß, oder der Server hat eine Dateigrößebegrenzung!";   
    } 
    } else { 
    echo "Falsche Erweiterung: ".$name; 
    } 

  } 
if($action == "view"){

 eval("dooutput(\"".gettemplate("upload")."\");");
  } 
?>
 
also erstmal: warum speicherst du denn den dateityp und -größe in der db? außerdem würd ich in der datenbank nur den bildnamen speichern. stell dir mal vor, du änderst aus irgendeinem grund den ordner der bilder, dann darfste alle einträge in der datenbank ändern. speicher lieber nur den dateinamen und da wo das bild eingebunden wird, da kannst du dann den bildordner angeben.

zum namen:
irgendwie versteh ich nich was du willst. du musst den gleichen namen nehmen, wie er auch in der datenbank eingetragen wird. sonst klappt das ja nich. bei dem dateinamen würd ich das sowieso so machen, dass du einen namen vergibst (du kannst ja im dateinamen noch irgendwas dranhängen, wie z.b. time() oder so). dann hast du auch keine probleme, falls im dateinamen irgendwelche sonderzeichen sind.
 
dazu hab ich auch mal eine Frage...wie kann ich denn z.B. den Dateinamen des Bildes verändern: Sprich z.B. aus hallo.jpg wird dann: 1234.jpg

?
EDIT:
habs hinbekommen...
 
Zuletzt bearbeitet:
ok, mal n beispiel. im folgenden wird davon ausgegangen, dass es im upload formular ein textfeld gibt, wo der user seinen namen eintragen kann. dieser wert soll neben dem unix-timestamp als bestandteil des neuen bildnamens werden:

PHP:
$tmp        = $_FILES["f_datei"]["tmp_name"]; // tmp name
$size       = $_FILES["f_datei"]["size"]; // file size
$type       = $_FILES["f_datei"]["type"]; // file type
$filename   = $_FILES["f_datei"]["name"]; // file name
$arrEndung  = explode(".",$filename); // file type
$user 	    = $_POST["f_name"]; // user name
$datei 	    = time()."_".$user.".".$arrEndung[count($arrEndung)-1]; // file name (database)
$dir        = "images/upload/".$datei; // 

// check file type
...

// chek file size
...

$upload = @move_uploaded_file($tmp,$dir);

so, und nun kann $datei in die datenbank gespeichert werden.
 
ne nicht so ganz. Also ich arbeite in der Tabelle mit fileid z.B. und deswegen soll auf dem Space die files auch mit file-1.zip , file-2.gif usw. gespeichert werden. Nur habe ich ka wie ich das machen kann.
 
Hallo zusammen

Ich hab auch noch ne kleine Frage zum Upload, wollte keinen neuen Thread aufmachen deswegen.

Ich hab ein Upload erstellt und hatte damit eigentlich auch keine Probleme (bzw sie sind bewältigt) . Als ich jenes input feld jedoch dann in ein anderes formular kopierte welches auch inputs vom type text hat klappte gar nix mehr.

ist es definitiv nicht möglich ein form mit text und file types laufen zu lassen oder mach ich was falsch?

gruss gala
 
Zurück