新聞中心
當(dāng)向服務(wù)器上傳圖像時(shí),根據(jù)服務(wù)器操作的復(fù)雜性和服務(wù)器性能,需要幾秒鐘到幾分鐘的時(shí)間來完成。本文的重點(diǎn)是在圖像上傳至服務(wù)器時(shí)使用JavaScript立即顯示圖像。

創(chuàng)新互聯(lián)是一家以網(wǎng)站設(shè)計(jì)建設(shè),成都小程序開發(fā)、網(wǎng)站開發(fā)設(shè)計(jì),網(wǎng)絡(luò)軟件產(chǎn)品開發(fā),企業(yè)互聯(lián)網(wǎng)推廣服務(wù)為主的民營(yíng)科技公司。主要業(yè)務(wù)涵蓋:為客戶提供網(wǎng)站策劃、網(wǎng)站設(shè)計(jì)、網(wǎng)站開發(fā)、域名注冊(cè)、網(wǎng)站優(yōu)化排名、買友情鏈接等服務(wù)領(lǐng)域。憑借建站老客戶口碑做市場(chǎng),建設(shè)網(wǎng)站時(shí),根據(jù)市場(chǎng)搜索規(guī)律和搜索引擎的排名收錄規(guī)律編程,全力為建站客戶設(shè)計(jì)制作排名好的網(wǎng)站,深受老客戶認(rèn)可和贊譽(yù)。
介紹
當(dāng)使用JavaScript將圖像上傳到服務(wù)器時(shí),根據(jù)服務(wù)器操作的復(fù)雜性,可能需要幾秒到幾分鐘來完成操作。在某些情況下,即使圖像上傳成功,也需要花費(fèi)更多的時(shí)間,這取決于服務(wù)器對(duì)圖像進(jìn)行額外處理的能力。
本文展示了一種使用代碼示例立即顯示圖像的方法(使用圖像的Base64編碼版本),同時(shí)將其上載到服務(wù)器,而無需等待操作完成。這種方法的目的是提高web應(yīng)用程序的用戶體驗(yàn),而不等待服務(wù)器做整個(gè)圖像的處理(例如,縮略圖生成、應(yīng)用過濾器等)后,上傳成功,因?yàn)樗梢栽诳蛻舳藈eb應(yīng)用程序上展示圖片。
背景
在使用AWS S3作為圖像存儲(chǔ)時(shí),最初遇到了這個(gè)問題。圖像縮略圖的設(shè)置是使用AWS Lambda完成的,在使用web應(yīng)用程序的JavaScript成功上傳圖像到S3之后,S3將異步觸發(fā)AWS Lambda函數(shù),該函數(shù)將生成圖像的縮略圖并將其存儲(chǔ)在另一個(gè)S3中。盡管這是一個(gè)高度可伸縮和可靠的圖像縮略圖生成解決方案,但是web應(yīng)用程序要等到生成縮略圖才能在應(yīng)用程序的視圖中顯示它,這是不現(xiàn)實(shí)的。
使用的代碼
此代碼使用VanillaJS編寫,不使用任何第三方JavaScript庫,因此如果您使用任何第三方框架,您可以使用框架或庫提供的構(gòu)造來調(diào)整概念并實(shí)現(xiàn)它。
步驟1:將圖像加載到瀏覽器
如圖所示在上面的例子中,有兩個(gè)HTML元素的例子。< img > DOM元素有顯示選中的圖像。 DOM元素為用戶選擇圖像文件。使用JavaScript文件API,可以聽改變事件處理程序和加載圖像訪問使用JavaScript。
步驟2:生成Base64縮略圖
使用JavaScript訪問圖像后,將其加載到HTML5 FileReader并轉(zhuǎn)換為Base64數(shù)據(jù)URL。然后使用Base64數(shù)據(jù)URL更新 DOM元素。
步驟3:使用Ajax上傳文件
使用Ajax,圖像上傳被啟動(dòng)到服務(wù)器。使用JavaScript, HTML表單提交將異步觸發(fā),具體的代碼將根據(jù)服務(wù)器實(shí)現(xiàn)而異,特別是在HTTP方法(例如,這里是POST)和URL方面。
如果服務(wù)器響應(yīng)包含圖像URL,則可以使用它相應(yīng)地更新 DOM元素,或者如果服務(wù)器維護(hù)了適當(dāng)?shù)膱D像訪問路徑約定(例如,/images/),則可以使用它加載圖像。
步驟4:(可選)客戶端縮略圖生成
也可以使用HTML5 Canvas API生成圖像縮略圖。如果您的用例涉及立即在web應(yīng)用程序中顯示圖像的縮略圖,如果在服務(wù)器中異步生成縮略圖,仍然可以通過使用JavaScript在客戶端中調(diào)整圖像的大小來直接顯示縮略圖。
網(wǎng)頁題目:JavaScript異步圖像上傳
鏈接分享:http://www.5511xx.com/article/cceojje.html


咨詢
建站咨詢
