php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.03.2005, 12:45  
Gast
 
Beiträge: n/a
Standard Beliebige Datei in DB speichern und wieder auslesen

tach,

ich hab mir ein kleines skript geschrieben, daß eine Datei einließt, sie in eine Datenbank schreibt, dort wieder rausholt und wieder in eine Datei schreibt:

Code:
<?php
$path = "/tmp/filein/";
$file= "News.doc";
$file_content = addslashes(fread(fopen($path.$file, "r"), filesize($path.$file)));

$sql = "INSERT  INTO blobtest ( datei ) VALUES ('".$file_content."')";

$query_id = mysql_query ($sql);
$id= mysql_insert_id();

$affected_rows = mysql_affected_rows();

    $res=0;

        if ($query_id==1 && $affected_rows==1)
    {
        $res=1;
    }

echo "

".$res;

$query = "SELECT datei FROM blobtest WHERE id=".$id;
$query_id = mysql_query ($query);
$query_res = mysql_fetch_array($query_id);

$fp = fopen("/tmp/".$file, "w");

if ($fp)
{
     $data = stripslashes($query_res[0]);
     fwrite($fp, $data);
}
fclose($fp);

?>
wenn ich das Input- mit dem Outputfile vergleiche, stelle ich nun fest, daß sich die Größe verändert hat. Zuvor 29.184 bytes und nachher 29.158 bytes

wie man sieht, handelt es sich um ein Word-Doc. Öffnen kann ich die Datei dann auch nicht mehr. Mit Bilderen funktioniert es auch nicht. Textdateien sind kein Problem. Der Datentyp des Mysql-Feldes ist mediumblob.

Weiß jemand, wieso das passiert? Ich vermute, er ließt eventuell einige Metadaten, die benötigt werden, nicht mit. Könnte das sein?

DiV
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.03.2005, 12:52  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

abgesehen davon, dass es nicht zu empfehlen ist, Dateien in ner Datenbank zu speichern:

http://www.php-faq.de/q/q-db-blob.html
// man kann ohne aufwand auch ein dateisystembasierendes system entwickeln, das doppelte dateinamen erlaubt etc.

naja dann vergleich die dateien doch mal, weis ned wie gut das mit binärdateien geht, hätte dir jetzt nen hexeditor empfohlen, oder mal CompareIt:
http://www.grigsoft.com/wincmp3.htm
robo47 ist offline   Mit Zitat antworten
Alt 21.03.2005, 13:47  
Gast
 
Beiträge: n/a
Standard

hallo,

danke für die antwort. habe ein cmp durchgeführt. hier ein Auszug aus dem Ergebnis:


14617 134 \ 24 ^T
14618 24 ^T 0 ^@

14620 0 ^@ 137 _
14621 137 _ 24 ^T
14622 24 ^T 0 ^@
14624 0 ^@ 140 `
14625 140 ` 24 ^T
14626 24 ^T 0 ^@
14628 0 ^@ 143 c
14629 143 c 24 ^T
14630 24 ^T 0 ^@
14632 0 ^@ 161 q
14633 161 q 24 ^T
14634 24 ^T 0 ^@
14636 0 ^@ 164 t
14637 164 t 24 ^T
14638 24 ^T 0 ^@
14640 0 ^@ 161 q
14641 161 q 25 ^U
14642 25 ^U 0 ^@
14644 0 ^@ 170 x
14645 170 x 25 ^U
14646 25 ^U 0 ^@
14648 0 ^@ 171 y
14649 171 y 25 ^U
14650 25 ^U 0 ^@
14652 0 ^@ 204 M-^D

beim Fettmarkierten sieht man den ersten Unterschied. Sieht mir danach aus, als ob die Funktion stripslashes bzw addslashes versagt... gibts da auch was, was funktioniert?
  Mit Zitat antworten
Alt 21.03.2005, 14:51  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

sorry bin kein linuxer, kann mit dem output jetzt nix anfangen, weil ich 0 plan davon hab was da wie was bedeutet, aber addlslashes/stripslashes-probleme kommen doch eigentlich nur zustanden wenn du daten ganz normal über post verschickst, und die Daten für den Dateiupload wandern doch ins $_FILES-array, da wird soweit ich weis kein einfluß von magic quotes oder so zu finden sein.



mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 21.03.2005, 15:05  
Gast
 
Beiträge: n/a
Standard

hab das Problem behoben.

einfach das stripslashes weglassen und es funzt. addslashes braucht er hingegen. schon merkwürdig...

danke für deine hilfe!
  Mit Zitat antworten
Alt 21.03.2005, 15:14  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

addslashes brauhcst du ja fürs query in die datenbank, damit eben keine ' im inhalt stehen, weil in deinem querys sieht das dann so aus


insert into bla (data) VALUES ('asdf'blub')
und das ' nach asdf würde sonst dein query killen, aber die \' sind ja nur da zum escapen, eingefügt wird ' und nicht \'.

man soltle schon drüber nachdenken und nicht wahrlos mit addslashes und stripslashes arbeiten. ausserdem hab ich mir bewußt angewohnt dafür mysql_escape_string zu verwenden, dann weist du warum du es nutzt, add/stripslashes ist bei mir für dinge mit magick quotes.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 21.03.2005, 15:50  
Gast
 
Beiträge: n/a
Standard

gibt es denn ein spezielles gegenstück für mysql_escape_string? habe keins gefunden.
  Mit Zitat antworten
Alt 21.03.2005, 16:00  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

ich glaub du hast immernoch nciht verstanden :P
du brauchst kein gegenstück. mysql_escape_string macht eigentlich genau das gleiche wie addslashes, und wie oben schon beschrieben brauchst du keien funktion die das rückgängi macht, weils es darum geht einen string zusammenzusetzen den mysql versteht.

wenn du ein \ ausgeben willst, musst du das ja auch escapen, sprich

echo "\"; // geht schief
und deshalb benutzt du das \ zum escapen.

echo "\\";
und gut ist und genauso ist das eigentlich bei dem string den du an mysql schickst. für mysql darf halt kein ' im string vorkommen, das muss escapt im query-string stehen. ein \' landet nicht als \' in der datenbank sondern als '

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Output einer Datei in einen String speichern christoph_999 PHP Tipps 2008 5 24.07.2008 18:11
Datei erstellen und Speichern Unter andrew22 PHP Tipps 2006 3 05.10.2006 17:14
Log Datei auslesen Computer PHP Tipps 2006 7 05.09.2006 16:15
String als Datei speichern Zangelo PHP Tipps 2006 23 25.08.2006 14:13
Daten aus einer txt Datei auslesen lassen Zangelo PHP Tipps 2006 4 29.05.2006 09:57
Text datei. Zeugs auslesen dsmcg PHP Tipps 2007 38 30.11.2005 20:39
Array in Session speichern und wieder auslesen Riot PHP Tipps 2005-2 3 08.07.2005 11:43
[Erledigt] header - Funktion - Datei speichern PHP-Fortgeschrittene 3 03.02.2005 14:38
benutzereingaben in einer datei speichern PHP Tipps 2005 1 27.01.2005 08:16
Datei speichern - via header - O Byte PHP-Fortgeschrittene 1 15.01.2005 17:13
Idee zum Speichern einer Datei PHP Tipps 2005 6 10.01.2005 22:36
*.dat Datei auslesen von unten nach oben! CHRIS PHP Tipps 2004-2 12 30.11.2004 14:15
[Erledigt] .reg Datei auslesen und bestimmte Zeile ändern PHP-Fortgeschrittene 19 27.10.2004 10:39
Auslesen von Teilen einer .txt Datei PHP Tipps 2004 4 20.09.2004 20:30
Variable von .txt Datei auslesen PHP Tipps 2004 1 01.07.2004 11:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php datei in datenbank speichern, datei in datenbank speichern, datei in datenbank speichern php, php dateien in datenbank speichern, dateien in datenbank speichern, textdatei in datenbank speichern, datei in db speichern, dateien in datenbank speichern php, php daten in datenbank speichern, php datei datenbank speichern, dateien in db speichern, http://www.php.de/datenbanken/19947-beliebige-datei-db-speichern-und-wieder-auslesen.html, php datei in db speichern, php file in datenbank speichern, php dateien datenbank speichern, datei in db speichern php, mysql_escape_string gegenstück, datei aus datenbank auslesen, mediumblob php documente anhängen, file in db speichern

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.