2017-10-03 9 views
0

Ich versuche, Bilddaten von Microsoft SQL Server-Datenbank aus Spalte mit dem Datentyp image, zeigen Sie es und speichern in Datei. Aber einige Bilder (10%) sind nicht abgeschlossen. Im Browser werden sie nur halb oder 1/3 von oben gerendert. Jedes Mal, wenn "problematische" Bilder gleich sind und gebrochen sind, ist es auch das Gleiche.Bild von db ist nicht abgeschlossen

Problematische Bilder ich versuchte, Show und Speicher auf 2 verschiedenen Servern

  • Problem Server - PHP Version 5.5.19-1 ~ dotdeb.1 (ca. 10% Bilder gebrochen)
  • Arbeits Server - PHP Version 5.2.17 (alle Bilder ok)

Wenn ich auf beiden Servern verwenden diese:

var_dump(base64_encode($row['data'], "UTF-8")); 

Es scheint, als ob ein Teil des Bildes fehlt - der String ist kürzer.

Ist dies ein Problem bei der Interpretation/Konvertierung von Daten?

Wenn ich auf abgerufenen Daten verwenden iconv_get_encoding oder mb_detect_encoding beide zurückkehren false auf beiden Servern ...

Mein Code:

$conn = mssql_connect ('xxx.xxx.xxx.xxx' , 'xxxxxxxxx', 'xxxxxxxxxxxxxxxxx'); 

if (!$conn) { 
    echo "<p style='color: red'>error in connection db! id: ".$id."</p>"; 
} else { 
    mssql_select_db('CK', $conn); 
    echo "<p style='color: green'>connection ok for id: ".$id."</p>"; 
} 

$result = mssql_query(
    "SELECT k.data FROM KatG k 
    WHERE k.auto='".$id."' 
    ORDER BY k.attr DESC"); 

$row = mssql_fetch_assoc($result); 


$imageData = base64_encode($row['data']); 
$src = 'data: image/jpeg;base64,'.$imageData; 
$img = '<img style="height: 60px; float: right;" src="'. $src. '">'; 

echo $img."<p>OK i get data!</p> <hr>"; 

Wenn ich speichern das Bild wie folgt aus: (ohne base64_encode Funktion)

Das Bild ist auf die gleiche Weise wie das angezeigte Bild im Browser unterbrochen.

Antwort

0

War notwendige Erhöhung TEXTSIZE vor mssql_fetch_assoc und Bilder sind ok ...

mssql_query('SET TEXTSIZE 10000000'); 

So Unterschied war in php.ini dort können Sie diesen Wert gesetzt pernament

mssql.textlimit = 10000000 
mssql.textsize = 10000000 
Verwandte Themen