• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    JavaScript實現異步圖像上傳功能

    來源:懂視網 責編:小采 時間:2020-11-27 22:11:31
    文檔

    JavaScript實現異步圖像上傳功能

    JavaScript實現異步圖像上傳功能:當向服務器上傳圖像時,根據服務器操作的復雜性和服務器性能,需要幾秒鐘到幾分鐘的時間來完成。本文的重點是在圖像上傳至服務器時使用JavaScript立即顯示圖像。 介紹 當使用JavaScript將圖像上傳到服務器時,根據服務器操作的復雜性,可能需要幾秒到幾分鐘來
    推薦度:
    導讀JavaScript實現異步圖像上傳功能:當向服務器上傳圖像時,根據服務器操作的復雜性和服務器性能,需要幾秒鐘到幾分鐘的時間來完成。本文的重點是在圖像上傳至服務器時使用JavaScript立即顯示圖像。 介紹 當使用JavaScript將圖像上傳到服務器時,根據服務器操作的復雜性,可能需要幾秒到幾分鐘來

    當向服務器上傳圖像時,根據服務器操作的復雜性和服務器性能,需要幾秒鐘到幾分鐘的時間來完成。本文的重點是在圖像上傳至服務器時使用JavaScript立即顯示圖像。

    介紹

    當使用JavaScript將圖像上傳到服務器時,根據服務器操作的復雜性,可能需要幾秒到幾分鐘來完成操作。在某些情況下,即使圖像上傳成功,也需要花費更多的時間,這取決于服務器對圖像進行額外處理的能力。

    本文展示了一種使用代碼示例立即顯示圖像的方法(使用圖像的Base64編碼版本),同時將其上載到服務器,而無需等待操作完成。這種方法的目的是提高web應用程序的用戶體驗,而不等待服務器做整個圖像的處理(例如,縮略圖生成、應用過濾器等)后,上傳成功,因為它可以在客戶端web應用程序上展示圖片。

     

    背景

    在使用AWS S3作為圖像存儲時,最初遇到了這個問題。圖像縮略圖的設置是使用AWS Lambda完成的,在使用web應用程序的JavaScript成功上傳圖像到S3之后,S3將異步觸發AWS Lambda函數,該函數將生成圖像的縮略圖并將其存儲在另一個S3中。盡管這是一個高度可伸縮和可靠的圖像縮略圖生成解決方案,但是web應用程序要等到生成縮略圖才能在應用程序的視圖中顯示它,這是不現實的。

    使用的代碼

    此代碼使用VanillaJS編寫,不使用任何第三方JavaScript庫,因此如果您使用任何第三方框架,您可以使用框架或庫提供的構造來調整概念并實現它。

    步驟1:將圖像加載到瀏覽器

     

    如圖所示在上面的例子中,有兩個HTML元素的例子。< img > DOM元素有顯示選中的圖像。<input> DOM元素為用戶選擇圖像文件。使用JavaScript文件API,可以聽改變事件處理程序和加載圖像訪問使用JavaScript。

    步驟2:生成Base64縮略圖

     

    使用JavaScript訪問圖像后,將其加載到HTML5 FileReader并轉換為Base64數據URL。然后使用Base64數據URL更新 DOM元素。

    步驟3:使用Ajax上傳文件

    使用Ajax,圖像上傳被啟動到服務器。使用JavaScript, HTML表單提交將異步觸發,具體的代碼將根據服務器實現而異,特別是在HTTP方法(例如,這里是POST)和URL方面。

    如果服務器響應包含圖像URL,則可以使用它相應地更新 DOM元素,或者如果服務器維護了適當的圖像訪問路徑約定(例如,/images/),則可以使用它加載圖像。

    步驟4:(可選)客戶端縮略圖生成

    <!DOCTYPE html> 
    <html> 
    <body> 
    <input type="file" id="imageFileInput" accept=".jpg, .jpeg, .png" /> 
    <img src="https://www.gxlcms.com//:0" id="preview" /> 
    <script> 
    document.getElementById('imageFileInput').addEventListener('change', function() { 
    var img = this.files[0]; 
    uploadImage(img, '/image/upload', function(url) { 
    // Image upload to server response 
    // Show the image using setImageUrl(URL) 
    }); 
    getBase64ImageUrl(img, function(base64ImageUrl) { 
    var height = 100, 
    width = 100; 
    getThumbnail(base64ImageUrl, height, width, function(base64ThumbnailUrl) { 
    setImageUrl(base64ThumbnailUrl); 
    }) 
    }); 
    }, false); 
    function setImageUrl(url) { 
    document.getElementById('preview').setAttribute('src', url); 
    }; 
    function uploadImage(img, url, callback) { 
    var xhr = new XMLHttpRequest(); 
    var fd = new FormData(); 
    xhr.open("POST", url, true); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     callback && callback(xhr.responseText); 
    } 
    }; 
    fd.append("upload_image", img); 
    xhr.send(fd); 
    }; 
    function getBase64ImageUrl(img, callback) { 
    var reader = new FileReader(); 
    reader.readAsDataURL(img); 
    reader.onload = function() { 
    callback && callback(reader.result); 
    }; 
    reader.onerror = function(error) { 
    console.log('Error: ', error); 
    }; 
    }; 
    function getThumbnail(base64ImageUrl, height, width, callback) { 
    var canvas = document.createElement('canvas'); 
    var ctx = canvas.getContext("2d"); 
    var image = new Image(); 
    image.src = base64ImageUrl; 
    image.onload = function() { 
    ctx.drawImage(image, 0, 0, width, height); 
    callback && callback(canvas.toDataURL()); 
    }; 
    } 
    </script> 
    </body> 
    </html> 

    總結

    以上所述是小編給大家介紹的JavaScript實現異步圖像上傳功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    JavaScript實現異步圖像上傳功能

    JavaScript實現異步圖像上傳功能:當向服務器上傳圖像時,根據服務器操作的復雜性和服務器性能,需要幾秒鐘到幾分鐘的時間來完成。本文的重點是在圖像上傳至服務器時使用JavaScript立即顯示圖像。 介紹 當使用JavaScript將圖像上傳到服務器時,根據服務器操作的復雜性,可能需要幾秒到幾分鐘來
    推薦度:
    標簽: 圖片 上傳 實現
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 精品一区二区三区色花堂| 亚洲精品无码乱码成人| 欧美亚洲综合免费精品高清在线观看| 国产日韩精品中文字无码| 另类国产精品一区二区| 亚洲成人精品久久| 国产伦精品一区二区三区| 亚洲精品A在线观看| 国产免费久久精品99久久| 国产成人精品日本亚洲11| 亚洲AV永久无码精品成人| 久久久WWW免费人成精品| 99久久精品免费观看国产| 久久国产精品99久久久久久老狼 | 亚洲AV第一页国产精品| 国模精品一区二区三区| 99久re热视频这里只有精品6| 精品国产美女福利到在线不卡| 国产欧美日韩综合精品一区二区| 亚洲国产精品综合久久一线| 久久青青草原精品国产软件| 国产亚洲精品国看不卡| 国产精品久久久久久久久久免费| 日韩欧美精品不卡| 91精品国产自产在线观看| 欧美久久精品一级c片片| 华人在线精品免费观看| 国产成人精品2021| 精品偷自拍另类在线观看| 国产精品无码素人福利| 午夜精品久久久久久毛片| 午夜福利麻豆国产精品 | 日韩精品一区二区三区不卡| 久久精品这里只有精99品| 久久996热精品xxxx| 久久精品成人一区二区三区| 久久久久成人精品无码| 欧美精品www| 亚洲精品高清一二区久久| 宅男在线国产精品无码| 久久精品国产亚洲AV无码娇色|