php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.08.2008, 22:26  
Neuer Benutzer
 
Registriert seit: 27.08.2008
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
mcules befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Datei in MSSQL speichern

Hallo erstmal, ich habe hier ein mittelgroßes Problem.
Ich muß, für ein Projekt ein PDF in die Datenbank speichern und auch wieder daraus auslesen. Feldtyp ist hierbei image.

Mein Problem besteht darin das ich es nicht hin bekomme eine Datei in das image-Feld zu speichern.

Code:
Warning:  mssql_query() [function.mssql-query]: message: Operandentypkollision: text ist inkompatibel mit image (severity 16) in
Dieser Feldtyp ist jedoch verpflichtend für mich, d.h. ich kann keinen anderen benutzen.

Hatte das mal zum testen auf ein Text-Feld umgestellt und dahin eine Datei mit folgendem Skript gespeichert:
PHP-Code:
<?php
include('libs/includes.php');
include(
'libs/class_database.php');

$db = new database($CONFIG['database']['type'], $CONFIG['database']['host'], $CONFIG['database']['db'], $CONFIG['database']['user'], $CONFIG['database']['pass']);
$db->debug_mode();

$file_ary reArrayFiles($_FILES['files']);

foreach (
$_FILES['files']['error'] as $key => $error) {
  if (
$error == UPLOAD_ERR_OK) {
    
$datei_open fopen($_FILES['files']['tmp_name'][$key], 'rb');
    
$datei_read fread($datei_openfilesize($_FILES['files']['tmp_name'][$key]));
    
$data base64_encode($datei_read);
    
$dateiname str_replace(" ""_"$_FILES['files']['name'][$key]); 
    
$db->query("INSERT INTO Files (FileContent, FileName, FileType, FileSize) VALUES ('$data', '".$dateiname."', '".$_FILES['files']['type'][$key]."', '".$_FILES['files']['size'][$key]."');");
  }
}
?>
Damit funktioniert der Upload problemlos, wenn ich dann jedoch die Datei wieder herunter lade:
PHP-Code:
<?php
include('libs/includes.php');
include(
'libs/class_database.php');

$db = new database($CONFIG['database']['type'], $CONFIG['database']['host'], $CONFIG['database']['db'], $CONFIG['database']['user'], $CONFIG['database']['pass']);

$db->query("SELECT * FROM Files WHERE FileID='10';");

while (
$my_row $db->get_row()) {
  
$ausgabe base64_decode($my_row['FileContent']);

  
$type $my_row['FileType'];
  
$filename $my_row['FileName'];
  
$filesize $my_row['FileSize'];
  
header("Content-type: $type");
  
header("Content-Description: File Transfer");
  
header("Content-Disposition: attachment; filename=$filename");
  
header("Content-Transfer-Encoding: binary\n");
  
header("Content-Length: ".$filesize);
  
header("Accept-Ranges: bytes");
  
header("Cache-Control: no-store, no-cache, must-revalidate");
  
header("Cache-Control: post-check=0, pre-check=0"false);
  
header("Pragma: no-cache");
  echo 
$ausgabe;
}
?>
Funktioniert das nur mit Texten. Eine PDF oder RAR Datei kann er anschließend nicht mehr richtig öffnen.

Hat hier vielleicht jemand eine Idee die mir weiter helfen könnte?
mcules ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.08.2008, 10:34  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Muss es denn zwingend in der Datenbank sein?

Könntest du nicht einfach einen ordner haben, wo die Daten drin liegen, und den Namen / Ort der Datei in die DB schreiben?
Daniel ist offline   Mit Zitat antworten
Alt 28.08.2008, 13:05  
Neuer Benutzer
 
Registriert seit: 27.08.2008
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
mcules befindet sich auf einem aufstrebenden Ast
Standard

Ich wußte das es kommt *grins*
Ja, leider muß das sein. Aus Konzeptionellen Dingen müssen die Dateien in der DB gespeichert werden.
Glaub mir, Dateisystem währe mir auch viel lieber. Hat was mit freigegebenen Speicherplatz zu tun.
mcules ist offline   Mit Zitat antworten
Alt 28.08.2008, 13:26  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Auch in der DB fressen Dateien Speicher...

Welchen Spaltentyp hast du den in der Datenbank gewählt, obwohl ich das Schwachsinnig finde, dass Dateien in der DB abgelegt werden, denn eigentlich ist diese nicht dafür gedacht, sag ich jetzt mal ganz pauschal.

Edit meinte dazu:
Habe ich gerade gesehen. Das Feld image ist hier aber falsch, wenn dann brauchts du blob dafür...
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."

Geändert von tomtaz (28.08.2008 um 13:33 Uhr).
tomtaz ist offline   Mit Zitat antworten
Alt 28.08.2008, 14:06  
Neuer Benutzer
 
Registriert seit: 27.08.2008
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
mcules befindet sich auf einem aufstrebenden Ast
Standard

Die fressen aber Speicher auf einem anderen Server, da sieht das ein wenig anders aus
Glücklich bin ich hierüber auch nicht, das kannst du mir glauben, leider muß es aber sein.
Blob gibt es als Feld-Typ in einer MSSQL nicht, sonst hätte ich dieses genommen.
mcules ist offline   Mit Zitat antworten
Alt 28.08.2008, 14:07  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von mcules Beitrag anzeigen
Ich wußte das es kommt *grins*
Ja, leider muß das sein. Aus Konzeptionellen Dingen müssen die Dateien in der DB gespeichert werden.
Glaub mir, Dateisystem währe mir auch viel lieber. Hat was mit freigegebenen Speicherplatz zu tun.
Damit habe ich wiederrum gerechnet

Ok, wenn das dann schon sein muss, dann geht image hier nicht. Wie tomtaz schon sagte, ist blob hierfür die richige Wahl.

Ich habe das in dieser Form schon mal gesehen, allerdings in Verbindung mit PHP und MySQL. Ob es auch mit MSSQL geht, kann ich dir nicht sagen.

Und jetz muss ich doch nochmal fragen:

Zitat:
Zitat von mcules Beitrag anzeigen
Dieser Feldtyp ist jedoch verpflichtend für mich, d.h. ich kann keinen anderen benutzen.
Warum das zum Teufel? Ich denke nicht, dass es so funktioniern wird.

//Edit: Blob gibt es nicht... Das ist natürlich schlecht.
Daniel ist offline   Mit Zitat antworten
Alt 28.08.2008, 14:11  
Neuer Benutzer
 
Registriert seit: 27.08.2008
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
mcules befindet sich auf einem aufstrebenden Ast
Standard

Das wurde mir so vorgeschrieben, kann aber, wenn es keine andere Möglichkeit gibt, mit dem verantwortlichem nochmal reden.
Er wollte dieses Feld, weil da bis zu 2GB möglich sind.
Text hat aber auch 2GB oder bin ich da falsch informiert? Würde das mit Text den funktionieren?
mcules ist offline   Mit Zitat antworten
Alt 28.08.2008, 14:18  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Wowowo ...

Wenn ihr 2 GB große Daten in eine Datenbank schreiben und auch öfters wieder lesen wollt, gibt das starke Performanceeinbrüche im Vergleich zum Dateisystem.

Dadurch werden auch alle anderen Datenbankanwendungen belastet. Ich halte das für keine gute Idee, denn Datenbanken sind für sowas nicht ausgelegt.

Aber da wird dir einer von den Cracks hier vermutlich noch genauere Daten nennen.
Daniel ist offline   Mit Zitat antworten
Alt 28.08.2008, 14:36  
Neuer Benutzer
 
Registriert seit: 27.08.2008
Beiträge: 13
PHP-Kenntnisse:
Fortgeschritten
mcules befindet sich auf einem aufstrebenden Ast
Standard

Glaub mir, der Problematik bin ich mir durchaus bewußt. Mich braucht ihr davon nicht überzeugen, da ich auch kein Befürworter davon bin.
Die Dateien haben in der Regel 1-5 MB. Es soll nur möglich sein.
mcules ist offline   Mit Zitat antworten
Alt 28.08.2008, 14:44  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Ist das zufälliger weiße für ein Schul- Studium Projekt?
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz 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
Quellcode einer dynamischen Seite kopieren und als Datei speichern Lothar PHP Tipps 2008 15 05.05.2008 23:32
Datei speichern bei MIR Uratuso PHP Tipps 2008 2 15.02.2008 19:19
Datei erstellen und Speichern Unter andrew22 PHP Tipps 2006 3 05.10.2006 17:14
String als Datei speichern Zangelo PHP Tipps 2006 23 25.08.2006 14:13
Musik Datei abspielen und parallel als MP3 speichern Plague Off-Topic Diskussionen 5 22.05.2006 19:17
dynamische Seite als htm datei speichern chrisbog PHP Tipps 2006 4 23.01.2006 22:11
Externe Datei auslesen und auf Webspace speichern Beitragsarchiv 9 19.04.2005 16:44
DUMP per Linux in ein Datei speichern!! Klaus Datenbanken 1 11.04.2005 08:12
Idee zum Speichern einer Datei PHP Tipps 2005 6 10.01.2005 22:36
geparste datei speichern PHP Tipps 2007 12 04.01.2005 17:01
Kontaktformular: Felder auslesen und in .txt datei speichern djrace PHP Tipps 2004-2 4 29.12.2004 13:56
TXT Datei Öffnen, lesen, beschreiben, speichern maximus PHP Tipps 2004-2 1 28.11.2004 19:15
daten in einer text datei speichern kain PHP Tipps 2004 12 25.11.2004 14:25
Datei mit php erzeugen Stümper PHP Tipps 2004 4 12.10.2004 12:51
php und ftp PHP Tipps 2004 4 07.10.2004 09:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
pdf in mssql speichern, mssql ergebnis in datei speichern, mssql pdf speichern, pdf in sql datenbank speichern, http://www.php.de/datenbanken/47021-erledigt-datei-mssql-speichern.html, php mssql datenbank schreiben, operandentypkollision: text ist inkompatibel mit image, microsoft sql image pdf php upload, mssql blob, pdf in mssql datenbank speichern, operandentypkollision: nvarchar ist inkompatibel mit image, ms sql pdf speichern, mssql image, mssql pdf, mssql ergebnis datei, operandentypkollision text ist inkompatibel mit image, php mssql pdf in db speichern, pdf datein in sql datenbank speichern, operandentypkollision: varbinary ist inkompatibel mit text, operandentypkollision: image ist inkompatibel mit text

Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 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