Datei Upload

as333

Erfahrenes Mitglied
Hi,

ich habe ein kleines Problem.
Über folgendes Upload-Formular kann ich eine Datei auf den Server laden.

Nur jetzt möchte ich nicht das man die Datei aussuchen kann welche hochgeladen wird sondern das es eine vordefinierte Datei ist.

Wie kann ich das mit dem Quelltext hier verwirklichen?

PHP:
<?php
$action=$_GET['action'];
if ($action=="upload")
{
    	if ($_FILES['thefile']['error']!=UPLOAD_ERR_NO_FILE) {
		//print_r($_FILES);
		$fileinfo=(getimagesize($_FILES['thefile']['tmp_name']));
		$uploaddir = '/xampp/cgi-bin/';
		$targetfile=  $uploaddir . "output.jpg";
		@unlink($targetfile);
		if (move_uploaded_file($_FILES['thefile']['tmp_name'], $targetfile)) {
		   chmod($targetfile,0777);
		   ?>
		   <script language="JavaScript">senden()</script>
		   <?php
		} else {
		   echo "Es trat ein Fehler beim Hochladen der Bilddatei auf!<br>";
		}
    	}
}
else
{
	?>
	<form name="frmupload" method="post" action="?modus=upload&action=upload" enctype="multipart/form-data">
       	Bild-Datei hochladen:&nbsp;
       	<input type="hidden" name="MAX_FILE_SIZE" value="3000000">
       	<input name="thefile" type="file">
	<br><br>
	<button type="submit" value="Hochladen">Hochladen</button>
	</form>
	<?php
}
?>
 
Du kannst nur nacher prüfen, ob die Datei in dein Schema passt, aber prinzipiell kann man alles per HTTP-Request verschicken.
 
Gibt es denn irgendeine andere Möglichkeit eine vordefinierte Datei hochzuladen?

Wenn man beispielsweise auf einen Button drückt sodass die Datei die auf dem Server liegt in das Verzeichnis geladen wird?
 
Ja was ich meine ist das eine Datei.
Nennen wir sie beispielsweise mal xyz.xx

Diese Datei soll auf dem Server liegen.
Das soll eine Beispielsdatei sein.
Wenn man jetzt auf einen Button drückt soll diese Datei xyz.xx lokal auf dem Server sozusagen hochgeladen werden. Also in das Verzeichnis welches ich in meinem Script angegeben habe.
 
Die Datei ist also schon auf dem Server? Dann ist move_uploaded_file nicht ganz die passende Funktion. Ein simples mv, getriggert Durch irgendeinen GET oder POST Parameter sollte vollkommen genügen. Leider gibt es kein PHP-Äquivalent zu dieser Funktion. Du musst also entweder copy und unlink kombinieren:
PHP:
function move_file($von, $nach)
{
    copy($von, $nach);
    unlink($von);
}
Wobei hier allerdings eine Überprüfung der Rückgabewerte eingebaut werden sollte. Alternativ dazu kannst Du auch einen Systemefehl ausführen:
PHP:
define(OS_COPY_BEFEHL, "mv"); /* Unix */
/* define(OS_COPY_BEFEHL "copy"); Windows */

function move_file($von, $nach)
{
    exec(OS_COPY_BEFEHL ." \"$von\" \"$nach\"");
}
Wobei auch hier eine Überprüfung (auch der Parameter) anzuraten wäre.

Gruß
Eni,
 
Ja also es soll so funktionieren das man Dateien manuell hochladen kann und auch vordefinierte Dateien die auf dem Server bereits liegen auch hochladen kann.
 
Dann musst Du den User explizit zwischen File-Upload-Feld und z.B. einem Select-Feld mit den vordefinierten Dateien wählen lassen. Es ist nicht möglich das File-Upload-Feld für beide Aufgaben zu verwenden.
 
Zurück