PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fread funzt nicht



Jor
25-03-2008, 22:37
Hallo *.*,
ich habe zum Speichern von Bildern ein Beispielscript gefunden, kopiert und gestartet. Aber es kommt immer eine Fehlermeldung:"Warning: fread(): supplied argument is not a valid stream resource in C:\xampp\htdocs\zzzz\store.php on line 26"
Die Zeile sieht wie folgt aus: "$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));"

Die Zieldatei wird mittels Auswahldialog selektiert.

Habe schon gegooglt, gesucht, kilometer Texte gelesen, aber bin kein Stückchen weiter gekommen...:confused:

Hat jemand von euch ein Tipp, oder gar die Lösung?

jeebee
25-03-2008, 22:41
Hinweis: Auf Systemen, welche zwischen Binär- und Textdateien (z.B. Windows) unterscheiden, muss die Datei mit 'b' im fopen() Mode-Parameter geöffnet werden.


Also etwa
$data = addslashes(fread(fopen($form_data, "rb"), filesize($form_data)));

Weiss allerdings nicht sicher ob dies das Problem ist. Könnte auch mit nicht escapten Backslashes (\) im Pfad zu tun haben.

BLUESCREEN3D
25-03-2008, 23:58
$data = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
Benutz lieber folgendes:

$data = file_get_contents($form_data);
if ($data === false)
{
//fehler
}
$data = addslashes($data);

Ich hoffe $form_data wird nicht vom Benutzer angegeben ...

Jor
26-03-2008, 18:09
Hallo jeebee, hallo BLUESCREEN3D,

danke für eure Antworten :)
Werde gleich eure beiden Tipps umsetzen und schauen was passiert ;)
@BLUESCREEN3D: Wi emeinst du das? Händische Eingabe des Pfades?
Die Imagedatei wird mittels File-Dialog ausgewählt und der Pfad/Dateiname wird vom Dialog übergeben.

BLUESCREEN3D
26-03-2008, 19:08
Ich meinte, dass der Benutzer z.B. eine URI angeben könnte und damit deinen Server dazu bringt, Daten von einem anderen Server abzurufen.

Jor
27-03-2008, 16:03
Hi BLUESCREEN3D,
nee, das habe ich nciht vorgesehen, ich wollte einen Datei-Upload umsetzen,
wo es möglich ist, lokale Dateien vom Rechner hochzuladen.
Das habe ich bis jetzt so umgesetzt:
Form: <form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
File-Input: <input type="file" name="form_data" size="40">
Der Rest ist dann noch mit Submit-Button etc.
Was ich aber herausgefunden habe ist, dass "wahrscheinlich" nach der Auswahl kein Wert in der Variable $form_data steht. Ich habe einiges ausprobiert, aber es wird nichts angezeigt. Das zweite Prob sind wahrscheinlich die Slash's, die ich aber nicht durch einen doppelten Slash
ersetzen kann, da ich ja den Übergabewert nicht zur Verfügung habe.
Wenn ich eine Referenz im Script fest vorgebe, dann wird das Image wie gewünscht in der DB abgelegt.

BLUESCREEN3D
27-03-2008, 16:11
Guck dir mal das an und versuch es mit $_FILES:
http://de.php.net/features.file-upload

Jor
27-03-2008, 23:35
Yep, habe gelesen, geproggt, getestet und ... bin nur ein Stückchen weiter gekommen. :) Habe gelesen, das über $_FILES[] nicht der lokale Pfad ermittelt werden kann. Der reine Dateiname wrid mir wieder gegeben, aber mein Script rennt leider immer noch nicht. :mad:
Hat jemand eventuell ein Script oder ein Link, wo ein Beispiel hinterlegt ist, wie eine Datei (Image in meinem Fall) mittels eines File-Dialog ausgewählt und in eine DB geschrieben wird? Ich habe schon ein Script von Florian Dittmer gefunden, aber das funzt bei mir leider aus irgendwelchem Grund nicht.

Jor
28-03-2008, 21:30
So nun ist es ... am Laufen! :)
Nach weiterem Probieren und Testen habe ich den Funktionsaufruf mit fopen() und fread() in sofern umgebaut, dass der von mir zuvor angegebene (siehe unten) komplett aufgelöst wurde und die einzelnen Funktionsrückgabewerte jetzt erst in eine Variable gelesen werden und dann der nächsten Funktion übergeben werden. Warum das nun besser ist weis ich noch nicht, aber es funzt :):)
Vielen Dank nochmals für die Hilfe! :)

Sehr hilfreich war auch der Fund unter folgendem Link: http://www.webmaster-resource.de/tutorials/php/binaerdaten-in-einer-mysql-tabelle-speichern-02.php
Den Autoren dafür auch vielen Dank!

Sunny89
01-04-2008, 22:12
Hallihallo,

ich möchte mit fread den eingegebenen Text aus einer Textbox in ein html-dokument schreiben. Dies funktioniert auch, nur wenn ich in der Textbox Anführungszeichen verwende ( " und ' ), landen die am ende mit einem zusätzlichen Backslash in dem html-document ( \" und \' ).
Wie kann ich das umgehen? Weil die Anführungszeichen dann im html-doc ja nicht interpretiert werden...

undefined
01-04-2008, 22:57
Ein Wort eine Funktion stripslashes()

Sunny89
02-04-2008, 11:41
wow. cool, danke :)