iT邦幫忙

0

多張照片上傳的處理?

  • 分享至 

  • xImage

我目前的做法
是在前台新增商品照片時可以多個上傳
每個圖片都會有一個 hidden input,裡面放的是 base64

<input type="hidden" name="icon[]" value="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAacAAAJ7CAYAAABH+15RAAAKsGlDQ1BJQ0MgUHJvZmlsZQAASImVlgdUU1kexu976Y0...">

然後在後端 php 用迴圈 file_put_contents 將其下載到指定目錄

foreach ($_POST['icon'] as $value) {
    preg_match('/^(data:\s*image\/(\w+);base64,)/', $value, $result);
    $typeThis = '.' . $result[2];
          
    file_put_contents('../../images/product/cover-XXX'.$typeThis, base64_decode(str_replace($result[1], '', $value)));

只是這個字串長度真的讓人呵呵
然後如果上傳10MB以上的圖片,就直接不給過(應該是base64字串太長的關係,好像跟SIZE有關)
有沒有其他的方式有一樣的效果,但更乾淨的做法,可以不用那麼長?
可以用同樣的方式在後端抓取?前台又可以實現預覽?
先感謝各位大神!

看更多先前的討論...收起先前的討論...
小魚 iT邦大師 1 級 ‧ 2018-11-19 12:49:01 檢舉
> 上傳多大的圖片都可以

不通過.
網路傳輸跟網頁顯示都會有問題.
火爆浪子 iT邦研究生 1 級 ‧ 2018-11-19 12:57:36 檢舉
應該是說我要做到前台可以即時預覽,後台可以接收到圖片就行了,base64字串太長,不work
q00153 iT邦新手 3 級 ‧ 2018-11-19 13:27:57 檢舉
前台用 js 製作與顯示縮圖,然後用 ajax 模擬表單上傳檔案至後台,應該可行~
fillano iT邦超人 1 級 ‧ 2018-11-19 14:08:32 檢舉
前台可以預覽,不代表你一定要用預覽的東西上傳阿。
淺水員 iT邦大師 6 級 ‧ 2018-11-19 14:57:28 檢舉
先確認伺服器一次請求允許傳輸的上限是多少
( 用 phpinfo 函數去看 post_max_size )
因為你是一次傳多張圖片
如果傳輸資料的總和超過允許傳輸的上限就沒辦法成功傳輸

可以根據單次傳輸的上限,分次傳輸以解決這個問題
火爆浪子 iT邦研究生 1 級 ‧ 2018-12-06 11:41:34 檢舉
淺水員 : 確實遇到這個問題
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

我要發表回答

立即登入回答