淺談移動端AJAX上傳圖片的幾種方法(PHP)

     我們都知道移動端是和服務端分離的,前臺後臺井水不犯河水,只通過異步ajax來傳輸數據,尤其是微信小程序和WEBAPP,因此不能直接通過調用PHP代碼的方式來完成圖片上傳,因此這時就需要通過先將圖片轉化爲BASE64的格式

var fr = new FileReader();
                //成功處理
                fr.onload = function(e) {
                    //這裏是圖片的base64字符串
                    console.log(e.target.result.length);
                    $('#im').attr("src",e.target.result);
                    console.log(e.target.result);
                }; 
                 //失敗處理
                fr.onerror = function() {
                    }
                fr.readAsDataURL(ob.files[0]);

並且以post方式提交到後臺,這時後臺共有三種方式來存儲圖片

1.直接存儲base64的內容到數據表中

這種方法是最直接和簡單的,將base64轉換爲blob形式,直接存入數據庫,但這樣會大大浪費數據庫資源和運行速度。

2.後端接到base64數據後轉換爲圖片並存在服務器文件中,數據庫中只存儲圖片的URL

大大節省了服務器的資源,並且前臺<img >標籤可以直接通過src賦值爲網絡地址來顯示這張圖片

$base64=input('post.base',"","strval");
echo strlen($base64);
preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64, $result);
$type = $result[2];    //獲取圖片的類型jpg png等
echo $type;
$name = "xxxx.".$type;//圖片重命名
$savepath = "路徑".$name;   //圖片保存目錄
file_put_contents($savepath, base64_decode(str_replace($result[1], '', $base64)));   //對圖片進行解析並保存

3.大型雲存儲網盤(例如七牛雲)

當圖片數量特別多時,存在服務器中就會導致服務器負載過重,這是我們可以採取雲盤存取的方式,註冊七牛雲網盤後,可以將圖片直接存進七牛雲網盤,並且返回一個網絡地址,將這個網絡地址存入數據表中即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章