2016-03-04 64 views
0

因此,我的網站(使用laravel 5構建)允許用戶上傳圖片並裁剪(使用croppie.js),但問題在於 - 我得到的裁剪圖像基於64位數據URI我不知道如何上傳它。如何使用laravel保存剪裁的頭像

我的考驗: 1.最初我使用的形式發佈了 - 但現在我得到的base64 URI,我不能把它在某些<input>元素的形式,像這樣:

<form.....> 
 

 
\t <div class="actions"> 
 
\t  <button class="file-btn"> 
 
\t   <div>Upload</div> 
 
\t   <input name="original" type="file" id="upload"/> 
 
\t  </button> 
 
\t  <div class="crop"> 
 
\t   <div id="upload-demo"></div> 
 
\t  </div> 
 
\t  <div id="result"></div> 
 
\t </div> 
 
\t <input id="image" type="hidden" name="image"> 
 

 
</form>

如果我可以將生成的base64 URI綁定到隱藏的輸入,它將是完美的!但我不能使它..

  1. 我可以發佈base64控制器 - 然後呢?我應該只在數據庫中存儲很長的字符串,還是在服務器端生成一個映像,然後存儲在服務器中?

看來,第一種方法是比較容易,但我一直在谷歌上搜索4小時,沒有得到答案......

回答

1
  • 裁剪圖像,生成的base64 URI
  • 後的base64 URI來laravel端點
  • 在服務器端和存儲圖像
  • 解碼的base64 URI

這應該有助於解碼部分:

Convert Base64 string to an image file?

+0

謝謝你指點我正確的方向,但我仍然對服務器端的文件對象非常困惑。 因此,我使用'file_put_contents('image64.png',$ avatar_data);'得到了一個文件,但我該如何使用該文件?我需要的是一個UploadedFile對象,它需要通過構造函數創建路徑,但是如何在這種情況下指定路徑?當我嘗試'$ avatar = new UploadedFile('image64.png',$ original-> getClientOriginalName());'時,它會拋出未知錯誤。 –

+0

解決! 'file_put_contents('image64.png',$ avatar_data); $ avatar = new UploadedFile('image64.png',$ original-> getClientOriginalName(),'image/jpg',null,null,true);' 這裏的訣竅是最後一個參數 - 設置爲true或它未知的失敗。 –