[英]Get image from SQL Table
我在我的 Joomla 3.x 網站上使用 SobiPro,並且在我的條目中有一個自定義字段,這是一個圖像,它存儲在我的名為XXXX_sobipro_field_data
的表中我有一個等於 23 的fid (field id)
圖像字段。 但數據看起來像這樣針對每個條目: jVFNT8JAEL37KzZ70kQp/US34WCgIEQ+AjUeyULXdgjtVrqgaPrf3d1WRA/E27438+a9maXEJZ8FcQiOqKDYp8SsMXuHF4XtGvcGj4HCnsK3EsOGjWnKsF8Qs0mway5gxRvrPNaMVXV0qWAhqC4gpmO2POuu5dj+ccIcPqqarPyw4SHXbE2N5ICKqqwgpTEz1jmrrGyC52wlgGdFj++ySJEtgjuT0SgYh9gv9RAJp09h0FU7OPVOiUg3qtuSad8gEkkbezZGCYM4Efqtqh7BD5pRkTwV3iX4WbUfCWk3KDp8w7d6GWV5mkBfFUhTSRU/C+7DyYygOLpRW6C92Wiiy10BWYwGwz4aToM+2nvW1TV63dENiANqo5Z7IXcpS22vT6DCOd/3KIyCLyHfcoNlYgsSu64Babz4/TFSK5JdutRa65xWt/1Ry1NL9A/fFf+jlD/AtxBDRvXFbe+c/FRafgE=
但是我需要顯示圖像,我應該如何處理這樣的事情?
編輯
我這樣做了:(它有效,但僅適用於 .png 圖像)
<?php
$sid = $_GET["id"];
$db = mysql_connect("localhost", "admin", "root")
or die("Impossible de se connecter : " . mysql_error());
mysql_select_db('database_name',$db);
$sql = 'SELECT baseData, sid, fid FROM XXXX_sobipro_field_data WHERE sid = ' . $sid;
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_assoc($req))
{
if ($data["fid"] == 22) {
$title = $data["baseData"];
}
if ($data["fid"] == 19) {
$desc = $data["baseData"];
}
if ($data["fid"] == 17) {
$activity = $data["baseData"];
}
if ($data["fid"] == 23) {
$enc_image = $data["baseData"];
$dec_image = unserialize(base64_decode($enc_image));
}
}
?>
<p>
<?php
echo "<span class=\"img\"><img src=\" ".$dec_image['original']." \" alt=\"\"> </img> </span>";
?>
<span class="title"><?php echo $title; ?></span>
<br />
<span class="activity"><?php echo $activity; ?></span>
<br />
<span class="desc"><?php echo $desc; ?></span>
</p>
<?php
mysql_close($db);
?>
我也在尋找相同的答案...最終不得不自己弄清楚。
簡而言之,您必須檢查2個選項:
函數“ /com_sobipro/lib/base/config.php”中提供了更長的版本:
public static function unserialize( $var, $name = null )
{
$r = null;
if ( is_string( $var ) && strlen( $var ) > 2 ) {
if ( ( $var2 = base64_decode( $var, true ) ) ) {
if ( function_exists( 'gzinflate' ) ) {
if ( ( $r = @gzinflate( $var2 ) ) ) {
if ( !$r = @unserialize( $r ) ) {
throw new SPException( sprintf( 'Cannot unserialize compressed variable %s', $name ) );
}
}
else {
if ( !( $r = @unserialize( $var2 ) ) ) {
throw new SPException( sprintf( 'Cannot unserialize raw (?) encoded variable %s', $name ) );
}
}
}
else {
if ( !( $r = @unserialize( $var2 ) ) ) {
throw new SPException( sprintf( 'Cannot unserialize raw encoded variable %s', $name ) );
}
}
}
else {
if ( !( $r = @unserialize( $var ) ) ) {
throw new SPException( sprintf( 'Cannot unserialize raw variable %s', $name ) );
}
}
}
return $r;
}
以下是執行編碼的功能:
public static function serialize( $var )
{
if ( !( is_string( $var ) ) && ( is_array( $var ) && count( $var ) ) || is_object( $var ) ) {
$var = serialize( $var );
}
if ( is_string( $var ) && function_exists( 'gzdeflate' ) && ( strlen( $var ) > 500 ) ) {
$var = gzdeflate( $var, 9 );
}
if ( is_string( $var ) && strlen( $var ) > 2 ) {
$var = base64_encode( $var );
}
return is_string( $var ) ? $var : null;
}
希望這可以幫助。
您解碼的字符串如下所示:
a:5:{s:4:“數據”; a:1:{s:4:“ exif”; a:3:{s:4:“ FILE”; a:6:{s:8:“ FileName “; s:10:” 51_ico.jpg“; s:12:” FileDateTime“; i:1417629743; s:8:” FileSize“; i:1762; s:8:” FileType“; i:2; s: 8:“ MimeType”; s:10:“ image / jpeg”; s:13:“ SectionsFound”; s:7:“ COMMENT”;} s:8:“ COMPUTED”; a:4:{s:4: “ html”; s:22:“ width =” 63“ height =” 63“”; s:6:“ Height”; i:63; s:5:“ Width”; i:63; s:7:“ IsColor“; i:1;} s:7:” COMMENT“; a:1:{i:0; s:57:”創建者:gd-jpeg v1.0(使用IJG JPEG v62),質量= 75“; }}} s:5:“圖像”; s:40:“圖像/sobipro/entries/55/img_51_ico.jpg";s:5:”拇指“; s:42:”圖像/ sobipro / entries / 55 / thumb_51_ico.jpg“; s:3:” ico“; s:40:” images / sobipro / entries / 55 / ico_51_ico.jpg“; s:8:”原始“; s:36:” images / sobipro / entries / 55 / 51_ico.jpg“;}
解決了這個問題。
$entries[$key]['field_avatar'] = $entry->get('field_avatar');
// Encrypt Image
$enc_image = $entries[ $key ]['field_avatar'];
// Decrypt image
**$dec_image = SPConfig::unserialize( $enc_image );**
將此用於圖像類型字段數據:
$img_data = unserialize(gzinflate(base64_decode( $sql_result)));
你會得到一個數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.