[GastForen Programmierung/Entwicklung PHP und MySQL Datei zum downloaden auslesen und Dateigrösse ausgeben

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Datei zum downloaden auslesen und Dateigrösse ausgeben

Roly
Beiträge gesamt: 77

3. Mär 2008, 15:15
Beitrag # 1 von 18
Bewertung:
(6763 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Forum

Ich möchte auf einer Seite verschiedene Dateien zum download anbieten. Diese Liste wird sich laufend ergänzen und die Files lade ich über mein FTP-Programm hoch. Soweit so gut... damit ich die Liste nicht immer manuell ergänzen muss, benutze ich dieses Script:

<?php
$ordner = "download/anleitungen/";
$handle=opendir($ordner);
while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") {
echo "<a href=\"$ordner" . $file . "\" target=\"urlTarget\" onClick=\"onOpenWindow(this.href,this.target);return(false);\">" . $file . " </a><br /><br />";
}
}
closedir($handle);
?>

Das funktioniert auch sehr gut! Jetzt wäre es nur noch schön, wenn man auch sehen könnte, wie gross die entsprechende Datei ist... da komm ich nicht ganz weiter! Könnt ihr mir da helfen? :-)

Besten Dank für Eure Hilfe!

Gruess Roly
X

Datei zum downloaden auslesen und Dateigrösse ausgeben

Intermedia
Beiträge gesamt: 1287

3. Mär 2008, 15:20
Beitrag # 2 von 18
Beitrag ID: #339869
Bewertung:
(6757 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

sieh dir mal filesize ( string $filename ) an.

Gruß Sven


als Antwort auf: [#339868]

Datei zum downloaden auslesen und Dateigrösse ausgeben

Roly
Beiträge gesamt: 77

3. Mär 2008, 15:39
Beitrag # 3 von 18
Beitrag ID: #339872
Bewertung:
(6753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank erstmals für die prompte Antwort! :-)

hab mir den Eintrag mal angeschaut... wird vermutlich an mir liegen dass es noch nicht funktioniert! Hab damit noch nicht so grosse Erfahrung... *gg*

Ich hab mal versucht, zu kombinieren... das sieht dann folgendermassen aus:
<?php
$ordner = "download/pdf-pic-settings/";
$handle=opendir($ordner);
while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") {
echo "<a href=\"$ordner" . $file . "\" target=\"urlTarget\" onClick=\"onOpenWindow(this.href,this.target);return(false);\">" . $file . " </a>";
echo "$id = filesize ( $file )";
echo "'Größe der Datei ' . $file . ': ' . $id<br />";
}
}
closedir($handle);
?>
nur funktioniert es nicht ganz... es werden nur unausgefüllte Variablen ausgegeben!

= filesize ( )'Größe der Datei ' . . ': ' .

so sieht jetzt die Ausgabe aus... :-/


als Antwort auf: [#339869]

Datei zum downloaden auslesen und Dateigrösse ausgeben

Intermedia
Beiträge gesamt: 1287

3. Mär 2008, 15:55
Beitrag # 4 von 18
Beitrag ID: #339876
Bewertung:
(6745 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

du solltest mal den Pfad zur Datei mit angeben.

echo "$id = filesize ( $file )";
das ist irgendwie Quatsch, in der Variable $id ist die Dateigröße in Byte enthalten.


Gruß Sven


als Antwort auf: [#339872]

Datei zum downloaden auslesen und Dateigrösse ausgeben

minou
Beiträge gesamt: 135

3. Mär 2008, 18:14
Beitrag # 5 von 18
Beitrag ID: #339891
Bewertung:
(6726 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,


Code
<?php  
$ordner = "download/pdf-pic-settings/";
$handle = opendir($ordner);

while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") {
echo '<a href="' . $ordner . "/" . $file . '"' . 'target="urlTarget" onClick="onOpenWindow(this.href,this.target);return(false);">' . $file . '</a>';
$id = filesize ( $file )";
echo "Größe der Datei " . $file . ": " . $id . "<br />";
}
}
closedir($handle);


Ohne es getestet zu haben, das sollte es in etwa sein, was das PHP angeht. Bei PHP musst du den Gesamten String nicht in Anführungszeichen einbinden, denn der Punkt heisst nicht anderes als dass wieder ein echo ausgegeben würde. Also steht jeder Teilstring für sich und muss für sich abgeschlossen sein.
Bei Javascript ist das glaub ich etwas anders, da wird die Gesamtausgabe eingefasst.

Gruss

minou


als Antwort auf: [#339868]

Datei zum downloaden auslesen und Dateigrösse ausgeben

Intermedia
Beiträge gesamt: 1287

3. Mär 2008, 18:38
Beitrag # 6 von 18
Beitrag ID: #339892
Bewertung:
(6723 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ minou ]
Ohne es getestet zu haben,


hättest du mal machen sollen, das ist das Ergebnis: Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\........... on line 9

;-)))

$id = filesize ( $file )";

Hier ist ein " zu viel, dann fehlt immernoch das Verzeichnis.

Gruß Sven


als Antwort auf: [#339891]

Datei zum downloaden auslesen und Dateigrösse ausgeben

Roly
Beiträge gesamt: 77

4. Mär 2008, 00:48
Beitrag # 7 von 18
Beitrag ID: #339929
Bewertung:
(6704 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Besten Dank für Eure Beiträge... :)

hab das gleich mal probiert... auf meinem Server resultiert dabei der Fehler: "Warning: filesize() [function.filesize]: stat failed for File XY"...

Ist das ein Problem der Datei-Rechte?!

Der Code sieht nun so aus:

<?php
$ordner = "download/pdf-pic-settings/";
$handle = opendir($ordner);

while ($file = readdir ($handle)) {
if ($file != "." && $file != "..") {
echo '<a href="' . $ordner . "/" . $file . '"' . 'target="urlTarget" onClick="onOpenWindow(this.href,this.target);return(false);">' . $file . '</a>';
$id = filesize ( $file );
echo "Grösse der Datei " . $file . ": " . $id . "<br />";
}
}
closedir($handle);?>


als Antwort auf: [#339892]

Datei zum downloaden auslesen und Dateigrösse ausgeben

Bitfilme
Beiträge gesamt: 264

4. Mär 2008, 01:31
Beitrag # 8 von 18
Beitrag ID: #339932
Bewertung:
(6690 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Siehe http://ch2.php.net/readdir
Code
<?php 
// Beachten Sie, dass !== vor 4.0.0-RC2 nicht verfuegbar war

if ($handle = opendir('/path/to/files')) {
echo "Directory handle: $handle\n";
echo "Files:\n";

/* Das ist der korrekte Weg, ein Verzeichnis zu durchlaufen. */
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}

/* Dies ist der FALSCHE Weg, ein Verzeichnis zu durchlaufen. */
while ($file = readdir($handle)) {
echo "$file\n";
}

closedir($handle);
}
?>


Das ist die Lösung für Filesize
filesize($ordner.$file); // So wird auch die Datei gefunden

$ordner = "download/pdf-pic-settings/"; // Hier / schon dabei

echo '<a href="' . $ordner . "/" . $file . '"' target.... Falsch!


als Antwort auf: [#339929]

Datei zum downloaden auslesen und Dateigrösse ausgeben

Roly
Beiträge gesamt: 77

4. Mär 2008, 09:26
Beitrag # 9 von 18
Beitrag ID: #339944
Bewertung:
(6652 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ok, hab den Code nochmals angepasst... Fehlermeldungen sind zwar weg, aber eine Ausgabe der Datei-Grösse hat es auch nicht... :-/

Code
<?php  
$ordner = "download";
if ($handle = opendir('download/pdf-pic-settings'))
filesize($ordner.$file);
$id = filesize ( $file );
{
while (false !== ($file = readdir($handle)))
if ($file != "." && $file != ".."){
echo "<a href=\"$ordner/pdf-pic-settings/" . $file . "\">" . $file . "</a> | " . $id . "<br />";
}
closedir($handle);
}
?>


Mit dem echo "<a href=... möchte ich ja einen Link zum Downloaden der betreffenden Datei anbieten...


als Antwort auf: [#339932]

Datei zum downloaden auslesen und Dateigrösse ausgeben

flobaer
Beiträge gesamt: 317

4. Mär 2008, 09:44
Beitrag # 10 von 18
Beitrag ID: #339946
Bewertung:
(6641 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Roly,

vielleicht solltest du die Größenberechnung auch in die Schleife schreiben ;-)

Viele Grüße,
Florian


als Antwort auf: [#339944]

Datei zum downloaden auslesen und Dateigrösse ausgeben

Intermedia
Beiträge gesamt: 1287

4. Mär 2008, 09:44
Beitrag # 11 von 18
Beitrag ID: #339947
Bewertung:
(6640 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,

was soll den der Unsinn hier?
Code
filesize($ordner.$file);  
$id = filesize ( $file );


fällt dir nicht auf das die Variable $id so nicht richtig beschrieben werden kann?
Erstens ist es doppelt und zweitens fehlt immer noch der Pfad.

Und Florians Bemerkung kommt mit dazu. ;-)

Gruß Sven


als Antwort auf: [#339944]
(Dieser Beitrag wurde von Intermedia am 4. Mär 2008, 09:46 geändert)

Datei zum downloaden auslesen und Dateigrösse ausgeben

Roly
Beiträge gesamt: 77

4. Mär 2008, 09:47
Beitrag # 12 von 18
Beitrag ID: #339948
Bewertung:
(6638 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry, wie oben schon gesagt hab ich noch nicht viel Erfahrung mit PHP... :-(

wie wäre es denn richtig?


als Antwort auf: [#339947]

Datei zum downloaden auslesen und Dateigrösse ausgeben

minou
Beiträge gesamt: 135

4. Mär 2008, 11:03
Beitrag # 13 von 18
Beitrag ID: #339958
Bewertung:
(6604 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe dir hier eine getestete Lösung.
Du musst den Pfad mit deinem Pfad ersetzen und am Schluss das Slash nicht vergessen (um href Aufruf zusammenzusetzen).



Code
$verzeichnis = opendir("pfad/weiterer_pfad/'"); 

while (false !== ($file = readdir($verzeichnis))) {
if ($file != "." && $file !="..") {
echo "<a href=\"" . $verzeichnis . $file . '">' . $file . ' </a>-- Grösse der Datei: ' . filesize($file) . "bytes<br />";
}
}
closedir($verzeichnis);


achte bitte darauf, dass du in der ersten Zeile den gesamten Pfad eingibst.
Erklärung:
(".") ist der aktuelle Pfad...
("../" eine Ebene höher (z.B. c:\files zu c:\)

Achte auch darauf, dass am ende des Pfades in opendir ein Slash steht, für die Ausgabe im href.

Gruss und viel Spass damit :-)

minou

P.S. das mit dem false in der while Schleife kannst du dir auch schenken, die while Schleife prüft von sich aus das Auftreten von false und beendet dann die Schleife.
Man schreibt ja auch while($a < 10) dann müsste es nach gewissen Leuten so heissen while(false !== $a < 10)...


als Antwort auf: [#339948]

Datei zum downloaden auslesen und Dateigrösse ausgeben

minou
Beiträge gesamt: 135

4. Mär 2008, 11:38
Beitrag # 14 von 18
Beitrag ID: #339963
Bewertung:
(6597 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Antwort auf [ minou ] Man schreibt ja auch while($a < 10) dann müsste es ja so heissen while(false !== $a < 10)...


entschuldigt bitte die falsche Aussage. Die while Schleife wird natürlich bei eintreten von true beendet. Also wenn eine Bedingung wahr wird. Trotzdem ist bei while das false !== ... ja eigentlich die Kernfunktion an sich, while hat ja genau diese Funktion, da bringt es doch nichts wenn man nochmal auf false !== ... prüft (also true == ...).

Sorry und Gruss

minou


als Antwort auf: [#339958]

Datei zum downloaden auslesen und Dateigrösse ausgeben

Roly
Beiträge gesamt: 77

4. Mär 2008, 15:01
Beitrag # 15 von 18
Beitrag ID: #339996
Bewertung:
(6580 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ok, wir sind auf dem richtigen Weg... :)

Bloss eines erstaunt mich: wenn ich bei opendir nur einen "." setze, wird mir eine ganze Liste von Files und Folders ausgegeben... was für mich auch logisch ist! Wenn ich jetzt eine Ebene tiefer gehe in den Folder "content/" so wird jetzt nur noch einen Folder images angezeigt, obwohl da noch viel mehr rum liegt... gehe ich noch eine Ebene tiefer in den Folder "content/download/" wird eine Fehler-Meldung ausgegeben: Warning: opendir(content/download/) [function.opendir]: failed to open dir: Invalid argument in c:\Inetpub\wwwroot\thoma-druck\content\download\con_download.php on line 37

aber ansonsten funktioniert jetzt die Grössen-Ausgaben mit den Files die im Folder "content" liegen... Nja, immerhin! ;-)

der nun aktualisierte Code:

Code
<?php 
$verzeichnis = opendir(".");

while (false !== ($file = readdir($verzeichnis))) {
if ($file != "." && $file !="..") {
echo "<a href=\"" . $verzeichnis . $file . '">' . $file . ' </a>-- ' . filesize($file) . "bytes<br /><br />";
}
}
closedir($verzeichnis); ?>



als Antwort auf: [#339963]
(Dieser Beitrag wurde von Roly am 4. Mär 2008, 15:11 geändert)
X