• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Dateien versenden per PHP

Programmier-Felix

Neues Mitglied
Hi!

Ich wollte gerne für eine Homepage eine Ecke gestalten, wo die Nutzer mir Dateien schicken können... (per Mail oder per FTP-Server) Ich dachte dies kann man bestimmt leicht mit PHP machen. Ich habe bloß null Ahnung wie ich es anstellen soll...

Ich weiß bloß, dass es ein Feld gibt, wo automatisch ein 'Durchsuchen...'-Button rechts neben einem Feld ist und wenn man draufklickt öffnet sich ein Fenster, wo man die Datei auswählen kann.

Also sie sollen mir per Website Dateien senden können. (Wieso so kompliziert, wenn's auch einfach geht? ^^)

Gruß
Programmier-Felix
 
Werbung:
Danke schon mal...

Das zweite ist glaube ich schon eher ein Treffer, aber erstens ist das für mich zu kompliziert (könnte mir einer erklären wenn er lust hat^^) und zweitens funktioniert bei mir ja schon das Beispiel unter dem Quellcode nicht. Also müsste ich es gar nicht erst ausprobierten.

Wäre schön wenn es noch andere Lösungen gäbe... (evtl. mit Erklärung)

Trotzdem danke für die schnelle antwort!
 
Werbung:
Für das was Du willst gibt es keine 100%ig für deinen Wunsch stimmende Anleitung. Wenn der zweite Link schon in die Richtung geht, probiere es aus, lerne wie es funktioniert und passe es an deine Wünsche an. Nicht für alles gibt es vorgefertigte Scripte.
 
Die gewünschten HTML Elemente sind Formularelemente
HTML:
<input type="file" id="file1" name="file1">
Diese lassen den Benutzer eine Datei auswählen. Üblich ist dass man das Formular wie folgt versendet.
HTML:
<form name="sendform" enctype="multipart/form-data" action="file_upload.php">
Auf dem Server brauchst dann ein Programm, was diese entgegen nimmt, beispielsweise ein PHP-Programm. Bei PHP bekommst die Infos zu den hoch geladenen Dateien durch
PHP:
$source_name = $_FILES["file1"]["name"];
$source_size = $_FILES["file1"]["size"];
$source_type = $_FILES["file1"]["type"];
$source_file = $_FILES["file1"]["tmp_name"];
$iUploadCode = $_FILES["file1"]["error"];
In der PHP-Datei auf dem Server musst dann noch was haben wie:
PHP:
move_uploaded_file($source_file, $UploadFilePath)
weil die Dateien normal in ein Temp-Verzeichnis deines Providers geladen werden. Die musst in dein Verzeichnis verschieben.
 
Zuletzt bearbeitet:
Erst mal danke... Das hat mich schon viel viel weitergebracht :)

Ich habe das mal nachgebaut, was du mir beschrieben hast...

PHP:
<html>
<head>
 <title>Test</title>
</head>
<body>
 <form name="sendform" enctype="multipart/form-data" action="file_upload.php" method="POST">
  <input type="file" id="file1" name="file1"><br>
  <input type="submit" id="submit1" name="submit1">
 </form>
 
 <?php
 if (isset ($_POST["submit1"]))
 {
  if ($_FILES["file1"] == "")
  { 
  } else {
  $source_name = $_FILES["file1"]["name"];
  $source_size = $_FILES["file1"]["size"];
  $source_type = $_FILES["file1"]["type"];
  $source_file = $_FILES["file1"]["tmp_name"];
  $iUploadCode = $_FILES["file1"]["error"];  
  $UploadFilePath = '???';
  move_uploaded_file($source_file, $UploadFilePath);
 
  }
 }
 
 ?>
 
</body>
</html>


Ich habe das mal ausgeführt und ich hatte dann auf dem Server eine Datei... Ich habe ein Bild hochgeladen (per Formular) und ich hatte dann auf dem FTP-Server eine Datei, die vom Dateityp 'Datei' ist! Ich kann diese Datei nicht öffnen... Was habe ich falsch gemacht?

Und kann mir jemand ein Beispiel geben was hier rein muss?
PHP:
$UploadFilePath = '???';
Ich habe das am Anfang '\upload' eingegeben damit der das im Ordner Upload speichert, aber ich hatte dann bloß im Hauptverzeichnis eine Datei, die '\upload' heißt...
 
Werbung:
Na, das musst du doch wissen, wohin die Datei soll. Ich mach es so:
PHP:
$sUploadDir = PHP_get_path_disk(). DIRECTORY_SEPARATOR . 'upload' . DIRECTORY_SEPARATOR;
$UploadFilePath = $sUploadDir . $source_name;
upload ist dann ein existierendes und manuell erstelltes Unterverzeichnis des Wurzelverzeichnis.
 
Irgendwie drückst du dich sehr unklar aus. Meinst du die Dateierweiterung, wie sie auf dem Server ankommt? Daher nenn ich die doch auch um wie dir Originaldatei auf dem Upload-PC. Klar kannst auch ohne Kopieren nicht zugreifen, schließlich ist das Temp-Verzeichnis des Providers nicht Teil des Verzeichnisbaumes, der zu deiner Domain gehört.
 
Werbung:
Das mit dem Pfad vergessen.

Und das mit dem Datei-Typ:

ich habe eine datei die 'bild.jpg' heißt und auf dem server finde ich eine datei die keinen datei-typ (sowas wie jpg, png, exe,...) hat. das ist mein problem....
 
Dein Problem ist auch, dass du scheinbar weder nachgesehen hast, was die Funktion move_uploaded_file macht, noch dass du meinen letzten Eintrag gelesen hast. Wenn du alles nur kritiklos übernimmst, was man dir anbietet, ohne zu versuchen, es zu verstehen, dann wirst deinen Code nie pflegen können.
 
Was meinst du den mit Dateierweiterung?

Ich habe jetzt auch (nach dem du mich drauf hingewiesen hast) nach gesehen was die Funktion macht, aber richtig verstanden habe ich es nicht...
 
Werbung:
Gib doch einfach mal 'Dateierweiterung' bei Google ein, mir wird das hier langsam echt zu blöd.
 
HAHAHA, ein fauler Programmierer, nah dann viel Spaß)
Und ein Forum für eigene Faulheit zu missbrauchen ist gar nicht gut. In einem Forum sollten die Anfänger die Hilfe der Erfahrener in Anspruch nehmen können, um Verständnis-Probleme zu lösen, die beim ERLERNEN eines bestimmten Stoffes auftauchen. Da erwartet man schon, dass die Leute, die Fragen stellen, sich vorher wirklich mit der Materie beschäftigt haben, oder wenigstens die angebotene Hilfe zu schätzen wissen, und sich damit auseinander setzen. Eben so werden hier die Erfahrungen und interessante Ideen zu Problem-Lösungen ausgetauscht. Ein Forum lebt vom Nehmen und Geben!

PHP:
<?php  
move_uploaded_file($_FILES['datei']['tmp_name'], "upload/datei.txt"); 
?>
Diese Funktion lädt die Datei in das Verzeichnis upload, und nennt die Datei datei.txt. Wenn du Bilder hoch laden möchtest, dann verwende eine Andere Dateierweiterung. Allgemein würde ich es vorher prüfen was für einen Dateityp der Benutzer hoch lädt. Damit kannst du z.B. bestimmte Dateien verbieten, oder Dateien in verschiedene Verzeichnisse vorsortieren usw.

PHP:
$_FILES['datei']['type']  // Diese Variable enthält den MIME-Type der Datei.
Die MIME-Types kannst du hier nachschlagen.
Wichtig: Der Ordner upload muss die Schreibrechte CHMOD(777) besitzen.
Außerdem unterstützt nicht jeder Webspace Dateiuploads.

Damit viel Erfolg beim programmieren!
PORTAL
 
Werbung:
HAHAHA, ein fauler Programmierer, nah dann viel Spaß)
Und ein Forum für eigene Faulheit zu missbrauchen ist gar nicht gut. In einem Forum sollten die Anfänger die Hilfe der Erfahrener in Anspruch nehmen können, um Verständnis-Probleme zu lösen, die beim ERLERNEN eines bestimmten Stoffes auftauchen. Da erwartet man schon, dass die Leute, die Fragen stellen, sich vorher wirklich mit der Materie beschäftigt haben, oder wenigstens die angebotene Hilfe zu schätzen wissen, und sich damit auseinander setzen. Eben so werden hier die Erfahrungen und interessante Ideen zu Problem-Lösungen ausgetauscht. Ein Forum lebt vom Nehmen und Geben!

War auch nicht so ernst gemeint^^


Ich habe das jetzt umgesetzt was du mir vorgelegt hast... (schon wieder eine spur von faulheit^^) und es klappt nicht...

Ich gebe (zum ersten mal) das jetzt auf mit dem upload :(

Aber trotzdem DANKE an alle die mir geholfen haben oder versucht haben zu helfen!!!
 
Wichtig: Der Ordner upload muss die Schreibrechte CHMOD(777) besitzen.

Mit solchen Aussagen wäre ich extrem vorsichtig! bei 777 kann sogar ein externer Server schreibend auf das Verzeichnis zugreifen. Wichtig ist, dass der apache-user in das Verzeichnis schreiben kann.

Gruß
/derMartin
 
Zurück
Oben