有的只是前端預覽圖片,
有的會同時透過Ajax儲存圖片,
就看你的需求去研究怎麼做了.
提升使用者體驗 UX
給使用者:「上傳有成功唷」 的回應
有些網頁有提供「上傳」的功能,但按了上傳卻不一定能「真的上傳成功」
這個動作能加深使用者操作的信心
另外 可能要再看更細部 舉例來說:
上傳大頭貼,就可以先看縮圖,是不是縮小後的樣子是使用者所能接受的
或是要上傳房屋的物件、賣畫的...會想看自己的商品上傳後,縮圖是否吸引消費者
不儲存就能減少多餘的流量,減少不必要的浪費,省下更多成本
1.為甚麼不等送出表單後才儲存圖片?
如果不是 ajax ,而是直接用傳統的 form 傳送,那麼假設傳送失敗,使用者要重新操作,這給人的感覺很不好。
2.且這些圖片就算點選刪除,後台也不會把它真的刪掉(再刪除前先複製連結)?
有兩種可能,一種是伺服器沒真的刪掉,另外一種是其實伺服器刪掉了,你看到的只是瀏覽器的 cache 而已。
製作成縮圖還是要經過php吧? 這樣也不會比較省流量阿 ,而且它們後會把你刪除的照片刪除
前端是可以直接縮圖的。例如可以:「前端縮圖,後端只檢查縮圖後的資料是不是符合規定。」這樣流量就比直接傳遞原圖還小了。不過怎麼樣比較好要看客戶需求。
請問大大,您所謂前端縮圖只是把圖片顯示小張?還是真的把圖檔變小?
可以真的變小, canvas 是最簡單的作法。
簡單說Javascript可以透過<input type='file'>
或是Drag&Drop動作取得要上傳的圖檔,然後透過Canvas可以取得圖檔內每個pixel,所以即使沒上傳,也什麼都能做。
以前用 canvas 產圖檔的經驗是,相同的圖片,每個瀏覽器產生的檔案大小不大一樣(印象中chrome比firefox小)。閒暇之餘還玩過不透過 canvas ,而是自己讀寫 ArrayBuffer ,配合 deflate 相關函式庫產圖檔…。
我將我以前的做法大致上給你了解一下。
一般會預覽圖會區分兩種方式。
1.實際上傳:圖片在選定圖後,就直接先上傳到伺服器上。當然,上傳的位置一般會先放在類似temp的地方。有些人會不另外存檔。只是將php中tml拿到的內容用變數轉出來。不過這招一般會消耗很大的記憶體。所以大多數來說,會另存上傳的檔案到web可以讀取到的目錄放。然後再送出路徑。
2.不直接上傳:利用html5的canvas。將上傳的內容重新繪製在canvas上。但並沒做上傳的動作。