2012-06-04 50 views
2

我有以下代碼:保存base64編碼的圖像插入文件中的PHP

<?php 
header('Content-Type: image/png'); 
$data = "iVBORw0KGgoAAAANSUhEUgAAAuAAAAI8CAYAAACwIh5dAAAgAElkZJgRCXxOAuIPzzTlg......";  
define('UPLOAD_DIR', '/home/Desktop/image.png'); 
$img = $data; 
$img = str_replace('data:image/png;base64,', '', $img); 
$img = str_replace(' ', '+', $img); 
$data = base64_decode($img); 
$file = UPLOAD_DIR . uniqid() . '.png'; 
$success = file_put_contents($file, $data); 
print $success ? $file : 'Unable to save the file.'; 
?> 

這裏$data包含圖像的用base64編碼字符串。我想將圖像保存到文件中。我做了以前的代碼也經歷了很多谷歌的教程,但它不工作。

任何人都可以幫助我在哪裏出錯。

在此先感謝。

+1

出了什麼問題? – Oliver

+0

你有任何額外的調試信息?發生了什麼?什麼是輸出?任何錯誤? – MrKiane

+0

它顯示消息'無法保存文件' – Sky

回答

-9

首先指定喜歡的正確路徑:

define('UPLOAD_DIR', '/home/Desktop/'); 

檢查您所提供的路徑具有讀/寫權限設置或不後。

+0

向改寫答案並選擇正確答案的投票。奧利弗的答案就是關於它。可能更好。 –

+0

Downvote也用於從Jamund複製代碼(http://j-query.blogspot.in/2011/02/save-base64-encoded-canvas-image-to-png.html),而不是引用它 – Konservin

5

我相信這行:

define('UPLOAD_DIR', '/home/Desktop/image.png'); 

應該是:

define('UPLOAD_DIR', '/home/Desktop/'); 
+0

我做了' define('UPLOAD_DIR','/ home/xpointers/Desktop /');'但它仍然顯示相同的消息 – Sky

6
define('UPLOAD_DIR', '/home/xpointers/Desktop/'); 

切記!您的apache web服務器將以其自己的用戶權限運行(例如www-data)。請注意,您的apache用戶或組運行的apache可以訪問您所需的目錄。要測試你可以chmod 777到這個目錄,看看會發生什麼。

寫入用戶目錄並不總是一個好主意。如果可能的話,在需要的用戶可以訪問的地方使用中性目錄

+0

非常好...非常感謝你 – Sky

相關問題