[請益] 外連圖片存至資料庫如何取出檔名(已解決)
最近在作FPDF崁入image的語法
不過版上大大有提到該語法是要提供圖片檔名
先存至資料庫在討論後面的東東
目前使用有把圖片存到資料庫
語法如下:
=================語法開始=================
<?
header("Content-type: image/png");
$url="http://chart.apis.google.com/chart?cht=gom&chd=t:100&chl=0&chs=340x230";
$img_string = base64_encode(file_get_contents($url));
$link = @mysqli_connect("localhost","admin","1234") or die("MYSQL");
mysqli_select_db($link,"data");
if( !$link)
{
echo""."mysqli_connect_errno()"."<br>"."mysqli_connect_error()"."<br>";
exit();
}
else
{
$sql ="INSERT INTO Images (code) values ('".$img_string."')";
mysqli_query($link, "SET CHARACTER SET UTF8");
mysqli_query($link, "SET collation_connection= 'utf8_general_ci'");
if( mysqli_query($link, $sql) )
{
echo"紀錄成功";
}
else
{
die("紀錄失敗");
echo mysqli_error($link);
}
mysqli_close($link);
}
?>
=================語法結束=================
資料表結構如下:
http://img196.imageshack.us/img196/1128/dataab.jpg

然後我把資料庫中一長串code
在另一個PHP中重新呼叫出來
=================語法開始=================
<?
$link = @mysqli_connect("localhost","admin","1234") or die("MYSQL");
mysqli_select_db($link,"data");
if( !$link)
{
echo""."mysqli_connect_errno()"."<br>"."mysqli_connect_error()"."<br>";
exit();
}
else
{
$sql ="SELECT * FROM Images ORDER BY PicNum DESC LIMIT 1";
mysqli_query($link, "SET CHARACTER SET UTF8");
mysqli_query($link, "SET collation_connection= 'utf8_general_ci'");
$result = mysqli_query($link, $sql) ;
while ($row = mysqli_fetch_assoc($result))
{
$img_string = $row['code'];
$img = base64_decode($img_string);
header("Content-type: image/png");
header("Content-length: " . strlen($img));
print $img;
}
}
=================語法結束=================
圖片有成功print出來
不過在FPDF中
顯示圖片的語法是
$pdf->Image(xxxxx.png,5,4,5,0,'png');
﹌﹌﹌﹌﹌
↑
剛剛存到資料庫中的語法並沒有辦法叫出圖片的檔案名稱
因為存到資料庫中的只是一長串被編譯過的code
請問外連圖片存至資料庫如何取出檔名??
麻煩指點一下!!謝謝 <(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.134.139
※ 編輯: teaRsis 來自: 140.116.134.139 (10/19 16:42)
※ 編輯: teaRsis 來自: 140.116.134.139 (10/19 16:44)
推
10/19 17:32, , 1F
10/19 17:32, 1F
→
10/19 17:33, , 2F
10/19 17:33, 2F
→
10/19 17:33, , 3F
10/19 17:33, 3F
→
10/19 17:34, , 4F
10/19 17:34, 4F
→
10/19 17:34, , 5F
10/19 17:34, 5F
→
10/19 18:03, , 6F
10/19 18:03, 6F
→
10/19 18:04, , 7F
10/19 18:04, 7F
→
10/19 18:04, , 8F
10/19 18:04, 8F
→
10/19 18:10, , 9F
10/19 18:10, 9F
→
10/19 18:11, , 10F
10/19 18:11, 10F
→
10/19 18:13, , 11F
10/19 18:13, 11F
→
10/19 18:14, , 12F
10/19 18:14, 12F
→
10/19 18:15, , 13F
10/19 18:15, 13F
→
10/19 18:15, , 14F
10/19 18:15, 14F
→
10/19 18:16, , 15F
10/19 18:16, 15F
→
10/19 18:16, , 16F
10/19 18:16, 16F
當然~存到暫存檔直接使用比較省空間阿!
不過重點是我不知道怎樣把抓到那個檔案放到暫存檔
並取得他在暫存檔中的檔案名稱
我只知道用 form 上傳檔案後可以自動取得暫存檔的相關資訊
http://forum.twbts.com/thread-581-1-1.html
因為不知道到怎樣使用暫存
才想說使用各位高手建議的方法
使用file_get_contents去抓資料
也的確「抓到他」了~但不知道是抓到哪去?
後來上網查了wget的方法
在命令列下:
$ wget "chart.apis.google.com/chart?cht=gom&chd=t:100&chl=0&chs=340x230" -O
f1.png
可以取得一個f1.png的檔案在那個資料夾
不過把那個指令放到PHP中就無效化
<?
exec("wget chart.apis.google.com/chart?cht=gom&chd=t:100&chl=0&chs=340x230 -O
f2.png");
?>
總之現在就是暫存檔也好
強制抓下來也好
希望能夠「抓到他」並取得檔名 (/‵Д′)/~ ╧╧
唉~這部分真的不懂~上網查了很多資料亂拼出來還是不行
希望高手們再給些教學~謝謝!
※ 編輯: teaRsis 來自: 140.116.134.139 (10/19 18:36)
→
10/19 18:25, , 17F
10/19 18:25, 17F
→
10/19 18:25, , 18F
10/19 18:25, 18F
→
10/19 18:26, , 19F
10/19 18:26, 19F
→
10/19 18:27, , 20F
10/19 18:27, 20F
→
10/19 18:37, , 21F
10/19 18:37, 21F
→
10/19 18:37, , 22F
10/19 18:37, 22F
→
10/19 18:37, , 23F
10/19 18:37, 23F
→
10/19 18:40, , 24F
10/19 18:40, 24F
→
10/19 18:52, , 25F
10/19 18:52, 25F
→
10/19 18:53, , 26F
10/19 18:53, 26F
→
10/19 18:53, , 27F
10/19 18:53, 27F
→
10/19 18:55, , 28F
10/19 18:55, 28F
參照 kylekai 的教學
寫了下述程式碼:
$url =
"http://chart.apis.google.com/chart?cht=gom&chd=t:100&chl=0&chs=340x230";
$fp = file_get_contents($url);
$tmp = tempnam('/tmp/','pic');
file_put_contents($tmp,$fp);
$img = $tmp.".png";
有順利存到tmp中-----> /tmp/picXxEzN1
然後放到FPDF中
$pdf->Image($img,4.5,4,19.5,0,'png');
網頁卻顯示錯誤訊息
Warning: fopen(/tmp/picXxEzN1.png) [function.fopen]: failed to open stream:
No such file or directory in
/home/admin/public_html/project/test/fpdi134/fpdf.php on line 1440
FPDF error: Can't open image file: /tmp/picXxEzN1.png
資料庫是這樣...
/tmp/picXxEzN1
/home/admin/project/test/printpdf.php
請問要如何取出「完整的」tmp 路徑來使用呢? (目前研究 sys_get_temp_dir 中...)
※ 編輯: teaRsis 來自: 140.116.42.196 (10/20 23:27)
→
10/20 23:49, , 29F
10/20 23:49, 29F
→
10/21 13:10, , 30F
10/21 13:10, 30F
→
10/21 14:24, , 31F
10/21 14:24, 31F
總算是完成了
原來是tmpnam指定路徑錯誤所以才存不進去想要的路徑
$url="http://chart.apis.google.com/chart?cht=gom&chd=t:10&chl=240&chs=340x230";
$fp = file_get_contents($url);
$tmp1 = tempnam('/home/admin/public_html/project/sfs30/tmp1/','pic');
file_put_contents($tmp1,$fp);
$tt = substr($tmp1,-9); //取出網頁中圖片檔案的字串
$pic11 = "/tmp1/".$tt;
至於副檔名
$pdf->Image($pic11,140,25,60,40,'png'); //在這邊指定即可
謝謝以上幫忙的各位大大
自己有很多不瞭解部分謝謝指導
我以後會多研究manual的 ( ̄▽ ̄#)﹏﹏
有協助的各位每人200p (稅前)
ming220
kylekai
LewisHamiltn
謝謝!!!
※ 編輯: teaRsis 來自: 140.116.42.196 (10/21 15:22)
※ 編輯: teaRsis 來自: 140.116.42.196 (10/21 15:24)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章