[英]Saving a base64 image to a MySQL blob field with PHP
我有這個客戶將文件保存為base64到MEDIUMBLOB字段(請不要問為什么)。
文件保存如下:
$file = file_get_contents($_FILES['file']['tmp_name']);
$file = base64_encode($file);
$file = mysql_real_escape_string($file);
$file_name = mysql_real_escape_string($_FILES['file']['name']);
$file_ext = mysql_real_escape_string($_FILES['file']['type']);
$sql = "INSERT INTO $file_table_name (file, file_name, file_ext) VALUES ('$file', '$file_name', '$file_ext')";
這是我用來強制下載文件的代碼:
header('Content-type: ' . $data->file_ext);
header('Content-Disposition: attachment;filename="' . $data->file_name . '"');
echo base64_decode($data->file);
die();
出於某種原因,這適用於PDF文件,但不適用於圖像文件。 當我嘗試在Windows預覽中打開文件時,它說:“Windows Photo Viewer無法打開此圖片,因為該文件似乎已損壞,損壞或太大”。 原始文件大約150KB。
如果我這樣做;
echo '<img src="data:' . $data->file_ext . ';base64,'.$data->file.'" />';
die();
...圖像看起來很好,我可以保存圖像(另存為)而不會出現問題。
誰知道我做錯了什么? 我錯過任何標題嗎?
使用DB中的值更新:
file_name: 'test.png'
file_ext: 'image / png'
文件: https : //gist.githubusercontent.com/horgen/25298f2689d9aed865db/raw/gistfile1.txt
原始文件: http : //cl.ly/image/2o3X3u3a0V0S
編碼文件: http : //cl.ly/image/1S3K3v0x0U0p
嘗試使用readfile(base64_decode($ data-> file))而不是echo。
是的..這很尷尬..我發現了問題。 這是一個Wordpress網站,我有這個functions.php文件,其中包含我的所有功能。 出於某種原因,該項目的前任開發人員在functions.php中包含了一個php文件。 包含的文件在“php”-tag之前有一些空格/制表符,這在解碼文件中生成了一個換行符:S
無論如何,謝謝大家試圖幫助我:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.