Upload-/Download-Modul für's Frontend

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Do 11. Okt 2007, 16:01

Möglich, aber wenn es für Contenido geht, muss es eigentlich auch woanders gehen.

Bitte schreibe mal, was ein

Code: Alles auswählen

echo "Src: ". $_FILES['file']['tmp_name'][0] . "<br />Dest: ".$cfgClient[$client]["path"]["frontend"].$pfad."/".$file_name;
vor

Code: Alles auswählen

if (move_uploaded_file($_FILES['file']['tmp_name'
liefert.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Moudi
Beiträge: 23
Registriert: Fr 13. Jan 2006, 08:26
Wohnort: Sumiswald, Schweiz
Kontaktdaten:

Beitrag von Moudi » Fr 12. Okt 2007, 07:57

Das Frontend liefert folgendes:
Src: /
Dest: /home/httpd/vhosts/narrensicher.ch/httpdocs/cms/upload/Download/Repertoir/Bestätigung.pdfDatei nicht hochgeladen
Stimmen da die ersten drei Positionen?!

Grüsse
moudi

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Fr 12. Okt 2007, 15:00

Src ist falsch.

Ändere mal

Code: Alles auswählen

echo "Src: ". $_FILES['file']['tmp_name'][0] . "<br />Dest: ".$cfgClient[$client]["path"]["frontend"].$pfad."/".$file_name;
in

Code: Alles auswählen

echo "Src: ". $file. "<br />Dest: ".$cfgClient[$client]["path"]["frontend"].$pfad."/".$file_name;
Muss ich mir doch nochmal das Modul ansehen, da wird was nicht richtig übergeben - aber es kann auch meine letzte Änderung sein ($_FILES['file']['tmp_name'][0]), daher testen wir nochmal das Original ($file).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

YAY
Beiträge: 14
Registriert: Mi 28. Mär 2007, 22:46
Kontaktdaten:

Upload-Module

Beitrag von YAY » Fr 2. Nov 2007, 09:41

Hallo om,

Danke das du das Module zur Verfügung stellst, ist echt klasse.

Nun komme ich allerdings zu meinem Problem: das Auflisten der Inhalte vom Upload Ordner ist vorhanden, funktioniert einwandfrei. Aber wenn ich Daten Uploaden möchte dann schreibt er mir immer die Fehlermeldung: "Es wurde keine Datei ausgewählt! Bitte Datei auswählen:"

Ich habe festgestellt das im Quelltext bei Form "action" keine Einträge (Pfad) vorhanden ist, ist das so gewollt?

Vielleicht kannst du mir mal einen Tipp geben woran das liegt.

Ich benutze übrigens die Version 4.6.15.

YAY
Beiträge: 14
Registriert: Mi 28. Mär 2007, 22:46
Kontaktdaten:

Beitrag von YAY » Fr 2. Nov 2007, 09:55

Danke om,

Diese Nachricht die ich von om bekommen hatte, möchte ich es allen anderen die genau diese Fehler hatten zur verfühgung stellen.

Folgende Nachricht erhielt ich von om:

########### ab hier ############

Das mit dem action ist schon ok. Es soll ja auf dieselbe Seite verwiesen werden. Probier's mal hiermit:

Input:

Code: Alles auswählen

?> 

<table cellspacing="0" cellpadding="0" cellpadding="4"> 

    <!--<tr> 
        <td style="font-size:11px">Upload-Verzeichnis:</td> 
        <td> 
            <select name="CMS_VAR[0]"> 
            <option value="0"></option> 
            <?php 

                $sql = "SELECT DISTINCT dirname from ".$cfg["tab"]["upl"]; 

                $db->query($sql); 

                while ( $db->next_record() ) { 

$upload_dir=substr_replace($db->f("dirname"),'',(strlen($db->f("dirname"))-1)); 

                    if ( "CMS_VALUE[0]" == $upload_dir) { 
                        echo '<option selected="selected" value="'.$upload_dir.'">'.$db->f("dirname").'</option>'; 

                    } else { 
                        echo '<option value="'.$upload_dir.'">'.$db->f("dirname").'</option>'; 

                    } 
                } 

            ?> 
            </select> 
        </td> 
    </tr> --> 
    <tr> 
        <td style="font-size:11px">Datei-Typ(en):</td> 
        <td><input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]"></td> 
    </tr> 
    <tr> 
        <td style="font-size:11px" colspan ="2">Erlaubte Datei-Typ(en) mit einem | trennen. Bsp.: gif|jpg|pdf</td> 
    </tr> 
    <tr> 
        <td style="font-size:11px">maximale Größe:</td> 
        <td><input type="text" name="CMS_VAR[2]" value="CMS_VALUE[2]"> KB</td> 
    </tr> 
    <tr> 
        <td style="font-size:11px" colspan ="2">1000 KB entsprechen ca. 1 MB</td> 
    </tr> 

</table> 

<?php
Output:

Code: Alles auswählen

<?php 

   cInclude('includes', 'functions.upl.php'); 

   // Absoluter Pfad zum Ordner in den die Datei hochgeladen werden soll. 
   //$pfad = "upload/CMS_VALUE[0]"; 

   // Ist eine maximale Größe der Datei festgelegt worden ? 
   if ("CMS_VALUE[2]" == "") { 
      $sizeabfrage = "no"; 
   } 
   else { 
      $sizeabfrage = "yes"; 
   } 

   // Maximale Größe der Datei (Falls $sizeabfrage = "yes" ist) 
   $filesize = "CMS_VALUE[2]"*1.024*1024; 

   // Wird die maximale Größe auch angezeigt ? 
   if ("CMS_VALUE[2]" == "") { 
      $sizeanzeige = "no"; 
   } 
   else { 
      $sizeanzeige = "yes"; 
   } 

   // Was für Dateitypen sollen erlaubt sein ? 
   $extend = "CMS_VALUE[1]"; 

   // Sollen die erlaubten Dateitypen angezeigt werden ? 
   $extendanzeige = "yes"; 

?> 
<?php 

   $fehler = FALSE; 
   $file_name = $_FILES['file']['name']; 
   $file_tmp_name = $_FILES['file']['tmp_name']; 
   $file_size = $_FILES['file']['size']; 

   if ($senden) { 
      $pfad = "upload/kategorien/".$_REQUEST['upldir']; 
      
      if ($file_name == "") { 
         $desc = $Beschreibung; 
         echo "<font color=#FF0000><b>Es wurde keine Datei ausgewählt!</b></font>"; 
         $fehler = TRUE; 
      } 

      if (!$fehler) 
      if ($_REQUEST['upldir'] == "0") { 
         $desc = $Beschreibung; 
         echo "<font color=#FF0000><b>Es wurde kein Verzeichnis ausgewählt!</b></font>"; 
         $fehler = TRUE; 
      } 

      if (!$fehler) 
      if (file_exists("$pfad/$file_name")) { 
         $desc = $Beschreibung; 
         echo "Datei: ".$file_name."<br>"; 
         echo "<font color=#FF0000><b>Dateiname schon vorhanden!</b></font>"; 
         $fehler = TRUE; 
      } 

      if (!$fehler) 
      if ($sizeabfrage == "yes") { 
         if ($file_size > $filesize) { 
            $desc = $Beschreibung; 
            echo "Datei: ".$file_name."<br>"; 
            echo "<font color=#FF0000><b>Die Datei ist zu groß!</b></font>"; 
            $fehler = TRUE; 
         } 
      } 

      if (!$fehler) 
      if (!eregi("($extend)$", $file_name)) { 
         $desc = $Beschreibung; 
         echo "Datei: ".$file_name."<br>"; 
         echo "<font color=#FF0000><b>Dieser Dateityp ist nicht erlaubt!</b></font>"; 
         $fehler = TRUE; 
      } 

      if (!$fehler) { 
//         if (copy($file, $pfad."/".$file_name)) { 
         if (move_uploaded_file($file_tmp_name, $pfad."/".basename($file_name))) { 
            chmod($pfad."/".basename($file_name), 0777); 
            uplSyncDirectory($pfad."/"); 
            $db = new DB_Contenido; 
            $sql = 'SELECT * FROM `'.$cfg["tab"]["upl"].'` WHERE `filename` = "'.$file_name.'"'; 
            $db->query($sql); 
            $db->next_record(); 
            $ID = $db->f('idupl'); 
            $sql = 'UPDATE `'.$cfg["tab"]["upl"].'` SET `description` = "'.$Beschreibung.'" WHERE `idupl` = "'.$ID.'"'; 
            $db->query($sql); 
            echo $cfg["tab"]["upl"]; 
            echo $ID; 
            echo $Beschreibung; 
            echo "Datei: ".$file_name."<br>"; 
            echo "Ordner: ".$pfad."<br>"; 
            echo "<font color=#00FF00><b>Datei hochgeladen</b></font><BR>"; 
            $fehler = FALSE; 
         } 
         else { 
            echo "Datei: ".$file_name."<br>"; 
            echo "<font color=#FF0000><b>Datei nicht hochgeladen</b></font>"; 
            $desc = $Beschreibung; 
            $fehler = TRUE; 
         } 

      } 
   } 

   if ($fehler || !$senden) { 


$folders = array(); 
$dir = "upload/kategorien"; 
$handle = @opendir($dir); 
while( $file = readdir($handle) ) { 
    if( is_dir("$dir/$file") ) { 
        if (($file!=".") && ($file!="..")) { 
          $folders[] = $file; 
        } 
    } 
} 
@closedir($handle); 
foreach ($folders as $f) { 
  $dir = "upload/kategorien/".$f; 
  $handle = @opendir($dir); 
  while( $file = readdir($handle) ) { 
      if( is_dir("$dir/$file") ) { 
          if (($file!=".") && ($file!="..")) { 
            $folders[] = $f."/".$file; 
          } 
      } 
  } 
  @closedir($handle); 
} 
sort($folders); 
//reset($folders); 
//print_r($folders); 

?> 


<form action="<?php $PHP_SELF; ?>" method="post" enctype="multipart/form-data"> 

<b>Bitte Upload-Verzeichnis auswählen:</b> 
<BR><BR> 
<select name="upldir"> 
<option value="0"></option> 
<?php 
/*$sql = "SELECT DISTINCT dirname from ".$cfg["tab"]["upl"]; 
$db->query($sql); 
while ( $db->next_record() ) { 
$upload_dir=substr_replace($db->f("dirname"),'',(strlen($db->f("dirname"))-1)); 
    if ( $_REQUEST['upldir'] == $upload_dir) { 
        echo '<option selected="selected" value="'.$upload_dir.'">'.$db->f("dirname").'</option>'; 
    } else { 
        echo '<option value="'.$upload_dir.'">'.$db->f("dirname").'</option>'; 
    } 
}*/ 
foreach ($folders as $f) { 
  if ( $_REQUEST['upldir'] == $f) { 
      echo '<option selected="selected" value="'.$f.'">'.$f.'</option>'; 
  } else { 
      echo '<option value="'.$f.'">'.$f.'</option>'; 
  } 
} 
?> 
</select> 
<BR><BR><BR> 
<b>Bitte Datei auswählen:</b> 
<BR> 
<?php 
   if ($sizeanzeige == "yes") { 
      echo ("Maximale Größe: ".($filesize/1024/1024)." MB"); 
   } 
?> 
<BR> 
<?php 
   if ($extendanzeige == "yes" && trim($extend) != "") { 
      echo ("Erlaubte Dateitypen: ".str_replace("|",", ",$extend)."<BR><BR>"); 
   } 
?> 
<input type="file" size="40" name="file"> 
<BR><BR> 
<b>Beschreibung</b> (optional):<br> 
<textarea name="Beschreibung" wrap="virtual" rows="5" cols="60" maxlength="10"><?php echo $desc; ?></textarea> 
<BR><BR> 
<input type="Submit" name="senden" value="Hochladen"><br> 
</form> 

<?php 
} 
?> 
#################### bis hier #################

Bitte Folgendes Beachten: Der Pfad "upload/kategorien/" muss an eurem Verzeichniss angepasst werden. Ich meine es tauchen insgesamt 3 x "upload/kategorien/" auf.

Nochmals besten Dank! an om.
Ich hoffe du hast nichts dagegen om, wenn ich die Mail hier veröffentliche.

Moudi
Beiträge: 23
Registriert: Fr 13. Jan 2006, 08:26
Wohnort: Sumiswald, Schweiz
Kontaktdaten:

Beitrag von Moudi » Fr 9. Nov 2007, 11:53

Hey YAY

Vielen Dank für dein Posting, mit diesem Code läuft's bei mir jetzt auch!!! Vielen vielen DANK!!!

Greez
moudi

rethus
Beiträge: 1827
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Upload-/Download-Modul für's Frontend

Beitrag von rethus » Fr 12. Jun 2009, 11:29

Ich hbae den gepostetedn Output von YAY mal etwas überarbeitet, optimiert und noch ein paar Fehler rausgezogen...

Hier zur freien Verfügung:

Code: Alles auswählen

<?php

cInclude('includes', 'functions.upl.php');

$fehler 	= FALSE;

$dir 		="upload/";		// Basis-Verzeichnis für Uploads
$pfad 		= $dir."CMS_VALUE[0]";	// erzwungener Upload-Bereich

if(isset($_REQUEST['upldir'])) $pfad = $pfad."/".$_REQUEST['upldir']; // Wenn ein Unterverz. gewählt wurde

$file_name 	= $_FILES['file']['name'];
$file_tmp_name 	= $_FILES['file']['tmp_name'];
$file_size 	= $_FILES['file']['size'];


// Ist eine maximale Größe der Datei festgelegt worden ?
if ("CMS_VALUE[2]" == ""){
	$sizeanzeige = "no"; // max groeße anzeigen?
	$sizeabfrage = "no";
}
else{ 
	$sizeanzeige = "yes"; // max groeße anzeigen?
	$sizeabfrage = "yes";
}

// Maximale Größe der Datei (Falls $sizeabfrage = "yes" ist)
$filesize = "CMS_VALUE[2]"*1.024*1024;

// erlaubte Dateitypen 
$extend = "CMS_VALUE[1]";

// erlaubte Dateitypen anzeigen?
$extendanzeige = "yes";


if ($senden) {
	if ($file_name == "") {
		$desc = $Beschreibung;
		echo "<font color=#FF0000><b>Es wurde keine Datei ausgewählt!</b></font>";
		$fehler = TRUE;
	}

	if (!$fehler)
		if ($_REQUEST['upldir'] == "0") {
		$desc = $Beschreibung;
		echo "<font color=#FF0000><b>Es wurde kein Verzeichnis ausgewählt!</b></font>";
		$fehler = TRUE;
		}

	if (!$fehler)
		if (file_exists("$pfad/$file_name")) {
		$desc = $Beschreibung;
		echo "Datei: ".$file_name."<br>";
		echo "<font color=#FF0000><b>Dateiname schon vorhanden!</b></font>";
		$fehler = TRUE;
		}

	if (!$fehler)
		if ($sizeabfrage == "yes") {
			if ($file_size > $filesize) {
				$desc = $Beschreibung;
				echo "Datei: ".$file_name."<br>";
				echo "<font color=#FF0000><b>Die Datei ist zu groß!</b></font>";
				$fehler = TRUE;
			}
		}

	if (!$fehler)
		if (!eregi("($extend)$", $file_name)) {
			$desc = $Beschreibung;
			echo "Datei: ".$file_name."<br>";
			echo "<font color=#FF0000><b>Dieser Dateityp ist nicht erlaubt!</b></font>";
			$fehler = TRUE;
		}

	if (!$fehler) {
	if (move_uploaded_file($file_tmp_name, $pfad."/".basename($file_name))) {
			chmod($pfad."/".basename($file_name), 0777);
			uplSyncDirectory($pfad."/");
			$db = new DB_Contenido;
			$sql = 'SELECT * FROM `'.$cfg["tab"]["upl"].'` WHERE `filename` = "'.$file_name.'"';
			$db->query($sql);
			$db->next_record();
			$ID = $db->f('idupl');
			$sql = 'UPDATE `'.$cfg["tab"]["upl"].'` SET `description` = "'.$Beschreibung.'" WHERE `idupl` = "'.$ID.'"';
			$db->query($sql);
			echo $cfg["tab"]["upl"];
			echo $ID;
			echo $Beschreibung;
			echo "Datei: ".$file_name."<br>";
			echo "Ordner: ".$pfad."<br>";
			echo "<font color=#00FF00><b>Datei hochgeladen</b></font><BR>";
			$fehler = FALSE;
		}
		else {
			echo "Datei: ".$file_name."<br>";
			echo "<font color=#FF0000><b>Datei nicht hochgeladen</b></font>";
			$desc = $Beschreibung;
			$fehler = TRUE;
		}

	}
}

if ($fehler || !$senden) {

	$folders = array();
	$handle = @opendir($pfad);
	while( $file = readdir($handle) ) {
		if( is_dir("$pfad/$file") ) {
			if (($file!=".") && ($file!="..")) {
				$folders[] = $file;
			}
		}
	}
	@closedir($handle);

	if(count($folders)>0){ // Wenn Unterverzeichnisse vorhanden...
		sort($folders);
	}
	?>
	<form action="<?php $PHP_SELF; ?>" method="post" enctype="multipart/form-data">
<?php if(count($folders)>0){ // Wenn Unterverzeichnisse vorhanden...?>
	<b>Bitte Upload-Verzeichnis auswählen:</b>
	<BR><BR>
	<select name="upldir">
		<option value="-1">Bitte w&auml;hlen</option>
		<?php
			foreach ($folders as $f) {
				if ( $_REQUEST['upldir'] == $f) 
					echo '<option selected="selected" value="'.$f.'">'.$f.'</option>';
				else
					echo '<option value="'.$f.'">'.$f.'</option>';
			}
		?>
	</select>
	<BR><BR><BR>
	<?php } ?>
	<b>Bitte Datei auswählen:</b><BR>
	<?php if ($sizeanzeige == "yes") echo ("Maximale Größe: ".($filesize/1024/1024)." MB"); ?>
	<BR>
	<?php if ($extendanzeige == "yes" && trim($extend) != "") echo ("Erlaubte Dateitypen: ".str_replace("|",", ",$extend)."<BR><BR>"); ?>
	<input type="file" size="40" name="file">
	<BR><BR>
	<b>Beschreibung</b> (optional):<br>
	<textarea name="Beschreibung" wrap="virtual" rows="5" cols="60" maxlength="10"><?php echo $desc; ?></textarea>
	<BR><BR>
	<input type="Submit" name="senden" value="Hochladen"><br>
	</form>
	<?php
}
?>
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable - Onlineshops, Hosting, Domains und Webentwicklung
suther.de - Webentwicklung, IT-Service, IT-Beratung, Linux-Administration

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

Gesperrt