2012-10-20 53 views
1

我想從移動設備上傳圖片到服務器。我們正在使用PhoneGap(Javascript)進行構建,因此我們將它轉​​換爲字符串以便將其發送到服務器。一旦我收到它,我就會遇到問題,將它變成可讀的圖像文件。 簡而言之,我需要將字符串和文件名發送給我,對它進行解碼,將其轉換爲.png,然後將其裁剪爲圓形圖像。base64圖片上傳和裁剪情況PHP

這就是我要上當前

if (isset($_POST['file'])) 
{ 
    //Result variable 
    $result = false; 

    $pic = base64_decode($_POST['file']); 
    $filename = $_POST['filename']; 

    if (strlen($pic) > 9) 
    { 
     $fh = fopen("/var/www/pics/events/".$filename, 'w') or die("can't open file"); 
     fwrite($fh, $pic); 
     fclose($fh); 
    } 
} 

我想我可以得到代碼的其他工作,如果我能想出什麼,我做錯了什麼,使得它無法正確保存爲圖像文件?文件上傳正確,但沒有擴展名,當我在瀏覽器中指向它時,它會出現像它應該是一個圖像文件,但從不顯示圖像。當我指向它的位置時,那個帶有彩色形狀的小碎片圖標就是我得到的。

我是否需要了解在此過程中發送的圖像類型?它是如何知道它是.gif,.jpg/jpeg,.png等?

在此先感謝您的幫助!

彌敦道

回答

1

出於安全考慮,您應該清理的文件名,以防止目錄遍歷。

在一個更加明顯的方面,請確保文件以正確的擴展名保存;如果您已經使用正確的擴展名保存,則應用程序可能會遇到編碼問題。

如果前面的兩種可能性都不是這種情況,請確保您的字符串大小不超過php.ini中的最大POST大小限制;如果是這種情況會增加尺寸限制。

+0

是應用程序使用的編碼方法。謝謝! – nathansizemore