欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript axios 實(shí)現(xiàn)進(jìn)度監(jiān)控的示例代碼

 更新時(shí)間:2025年01月07日 09:22:19   作者:Amo 6729  
在使用axios發(fā)送HTTP請(qǐng)求時(shí),可以通過onUploadProgress和onDownloadProgress來監(jiān)控上傳和下載的進(jìn)度,具有一定的參考價(jià)值,感興趣的可以了解一下

在使用 axios 發(fā)送 HTTP 請(qǐng)求時(shí),進(jìn)度監(jiān)控非常重要,尤其是在上傳或下載較大文件時(shí)。幸運(yùn)的是,axios 支持通過 onUploadProgress 和 onDownloadProgress 來監(jiān)控上傳和下載的進(jìn)度。

1. 監(jiān)控下載進(jìn)度

axios 提供了一個(gè) onDownloadProgress 回調(diào)函數(shù),可以用來監(jiān)聽下載的進(jìn)度。該回調(diào)會(huì)返回一個(gè) progress 對(duì)象,包含 loaded(已經(jīng)下載的字節(jié)數(shù))和 total(文件的總字節(jié)數(shù))等信息。

const axios = require('axios');

axios.get('https://example.com/large-file.zip', {
  onDownloadProgress: (progressEvent) => {
    const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    console.log(`Download Progress: ${percent}%`);
  }
})
.then(response => {
  console.log('Download completed!');
})
.catch(error => {
  console.error('Error downloading file:', error);
});

2. 監(jiān)控上傳進(jìn)度

對(duì)于文件上傳,也可以使用 onUploadProgress 來監(jiān)控上傳進(jìn)度。該回調(diào)函數(shù)類似,也返回一個(gè) progress 對(duì)象,包含上傳的字節(jié)數(shù)和文件的總字節(jié)數(shù)。

const formData = new FormData();
formData.append('file', fileInput.files[0]); // 假設(shè)文件通過 HTML 的文件輸入獲取

axios.post('/upload', formData, {
  headers: { 'Content-Type': 'multipart/form-data' },
  onUploadProgress: (progressEvent) => {
    const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    console.log(`Upload Progress: ${percent}%`);
  }
})
.then(response => {
  console.log('Upload completed!');
})
.catch(error => {
  console.error('Error uploading file:', error);
});

3. 結(jié)合上傳和下載進(jìn)度

如果你需要同時(shí)監(jiān)控上傳和下載進(jìn)度,可以在同一個(gè) axios 請(qǐng)求中同時(shí)使用 onUploadProgress 和 onDownloadProgress

const formData = new FormData();
formData.append('file', fileInput.files[0]);

axios.post('/upload', formData, {
  headers: { 'Content-Type': 'multipart/form-data' },
  onUploadProgress: (progressEvent) => {
    const percentUploaded = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    console.log(`Upload Progress: ${percentUploaded}%`);
  },
  onDownloadProgress: (progressEvent) => {
    const percentDownloaded = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    console.log(`Download Progress: ${percentDownloaded}%`);
  }
})
.then(response => {
  console.log('Upload and download completed!');
})
.catch(error => {
  console.error('Error occurred:', error);
});

4. 顯示進(jìn)度條

結(jié)合進(jìn)度值,你可以使用瀏覽器的進(jìn)度條(例如 <progress> 元素)來顯示進(jìn)度。

<progress id="upload-progress" value="0" max="100"></progress>
<progress id="download-progress" value="0" max="100"></progress>
const uploadProgressBar = document.getElementById('upload-progress');
const downloadProgressBar = document.getElementById('download-progress');

const formData = new FormData();
formData.append('file', fileInput.files[0]);

axios.post('/upload', formData, {
  headers: { 'Content-Type': 'multipart/form-data' },
  onUploadProgress: (progressEvent) => {
    const percentUploaded = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    uploadProgressBar.value = percentUploaded;
  },
  onDownloadProgress: (progressEvent) => {
    const percentDownloaded = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    downloadProgressBar.value = percentDownloaded;
  }
})
.then(response => {
  console.log('Upload and download completed!');
})
.catch(error => {
  console.error('Error occurred:', error);
});

5. 自定義進(jìn)度顯示

你還可以自定義進(jìn)度條的顯示方式,例如使用 console.log、alert 或自定義 DOM 元素顯示進(jìn)度。

const formData = new FormData();
formData.append('file', fileInput.files[0]);

axios.post('/upload', formData, {
  headers: { 'Content-Type': 'multipart/form-data' },
  onUploadProgress: (progressEvent) => {
    const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    document.getElementById('upload-status').innerText = `Upload Progress: ${percent}%`;
  },
  onDownloadProgress: (progressEvent) => {
    const percent = Math.round((progressEvent.loaded * 100) / progressEvent.total);
    document.getElementById('download-status').innerText = `Download Progress: ${percent}%`;
  }
})
.then(response => {
  console.log('Upload and download completed!');
})
.catch(error => {
  console.error('Error occurred:', error);
});

總結(jié)

  • 使用 onDownloadProgress 和 onUploadProgress 可以實(shí)現(xiàn)文件的上傳和下載進(jìn)度監(jiān)控。
  • 你可以根據(jù) progressEvent 獲取到 loaded 和 total 字段,計(jì)算出上傳或下載的進(jìn)度百分比。
  • 可以結(jié)合瀏覽器的 <progress> 元素或自定義進(jìn)度條來顯示上傳或下載的進(jìn)度。
  • axios 提供了非常簡(jiǎn)單且直接的方式來實(shí)現(xiàn)文件的進(jìn)度監(jiān)控,適用于大文件的上傳和下載場(chǎng)景。

通過這些方法,你可以輕松地在前端實(shí)現(xiàn)文件上傳和下載的進(jìn)度顯示。

到此這篇關(guān)于javascript axios 實(shí)現(xiàn)進(jìn)度監(jiān)控的示例代碼的文章就介紹到這了,更多相關(guān)js axios進(jìn)度監(jiān)控內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • webpack該如何打包(打包流程)

    webpack該如何打包(打包流程)

    這篇文章主要介紹了webpack該如何打包及打包流程,本文通過圖文示例相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2023-12-12
  • Bootstrap Table使用整理(一)

    Bootstrap Table使用整理(一)

    基于 Bootstrap 的 jQuery 表格插件,通過簡(jiǎn)單的設(shè)置,就可以擁有強(qiáng)大的單選、多選、排序、分頁,以及編輯、導(dǎo)出、過濾(擴(kuò)展)等等的功能
    2017-06-06
  • JS圖片定時(shí)翻滾效果實(shí)現(xiàn)方法

    JS圖片定時(shí)翻滾效果實(shí)現(xiàn)方法

    這篇文章主要介紹了JS圖片定時(shí)翻滾效果實(shí)現(xiàn)方法,涉及javascript結(jié)合時(shí)間函數(shù)實(shí)現(xiàn)頁面元素動(dòng)態(tài)切換的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • JavaScript中的console.profile()函數(shù)詳細(xì)介紹

    JavaScript中的console.profile()函數(shù)詳細(xì)介紹

    這篇文章主要介紹了JavaScript中的console.profile()函數(shù)詳細(xì)介紹,本文講解了console.profile()函數(shù)的瀏覽器支持情況、console.profile()的使用、Firebug中Profile按鈕的使用等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • JavaScript?中使用SpreadJS導(dǎo)入和導(dǎo)出?Excel?文件的方法

    JavaScript?中使用SpreadJS導(dǎo)入和導(dǎo)出?Excel?文件的方法

    這篇文章主要介紹了如何在?JavaScript?中使用SpreadJS導(dǎo)入和導(dǎo)出?Excel?文件,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 利用JavaScript編寫一個(gè)簡(jiǎn)單的1024小游戲

    利用JavaScript編寫一個(gè)簡(jiǎn)單的1024小游戲

    在每年的10月24日,我們都會(huì)慶祝程序員節(jié),這是一個(gè)向所有辛勤工作、創(chuàng)造出無數(shù)令人驚嘆應(yīng)用和系統(tǒng)的程序員們致敬的日子,為了紀(jì)念這個(gè)特殊的日子,我們將通過編寫一個(gè)簡(jiǎn)單的1024小游戲來向所有程序員們表示敬意,本文將詳細(xì)解釋如何使用JavaScript編寫這個(gè)小游戲
    2023-10-10
  • 微信小程序踩坑記錄之解決tabBar.list[3].selectedIconPath大小超過40kb

    微信小程序踩坑記錄之解決tabBar.list[3].selectedIconPath大小超過40kb

    這篇文章主要給大家介紹了關(guān)于微信小程序踩坑記錄之解決tabBar.list[3].selectedIconPath大小超過40kb的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • JS防止網(wǎng)頁被嵌入iframe框架的方法分析

    JS防止網(wǎng)頁被嵌入iframe框架的方法分析

    這篇文章主要介紹了JS防止網(wǎng)頁被嵌入iframe框架的方法,結(jié)合實(shí)例形式分析了針對(duì)不同瀏覽器防止網(wǎng)頁被嵌入框架的相關(guān)注意事項(xiàng)與操作技巧,需要的朋友可以參考下
    2016-09-09
  • js中事件的處理與瀏覽器對(duì)象示例介紹

    js中事件的處理與瀏覽器對(duì)象示例介紹

    本文為大家詳細(xì)介紹下js中關(guān)于簡(jiǎn)單事件的處理與瀏覽器對(duì)象,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下
    2013-11-11
  • Three.js實(shí)現(xiàn)3D乒乓球小游戲(物理效果)

    Three.js實(shí)現(xiàn)3D乒乓球小游戲(物理效果)

    本文將使用React Three Fiber 和 Cannon.js 來實(shí)現(xiàn)一個(gè)具有物理特性的乒乓球小游戲,使用 React Three Fiber 搭建基礎(chǔ)三維場(chǎng)景、如何使用新技術(shù)棧給場(chǎng)景中對(duì)象的添加物理特性等,最后利用上述知識(shí)點(diǎn),將開發(fā)一個(gè)簡(jiǎn)單的乒乓球小游戲,需要的朋友可以參考下
    2023-03-03

最新評(píng)論