最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

axios 提供了一個 onDownloadProgress 回調(diào)函數(shù),可以用來監(jiān)聽下載的進度。該回調(diào)會返回一個 progress 對象,包含 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)控上傳進度

對于文件上傳,也可以使用 onUploadProgress 來監(jiān)控上傳進度。該回調(diào)函數(shù)類似,也返回一個 progress 對象,包含上傳的字節(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é)合上傳和下載進度

如果你需要同時監(jiān)控上傳和下載進度,可以在同一個 axios 請求中同時使用 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. 顯示進度條

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

<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. 自定義進度顯示

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

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

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

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

相關(guān)文章

最新評論

正蓝旗| 安西县| 鞍山市| 林口县| 梧州市| 霍山县| 长宁区| 鱼台县| 福州市| 天津市| 萨迦县| 乾安县| 长宁县| 盘锦市| 西乡县| 临江市| 喀什市| 甘泉县| 平度市| 罗山县| 霍城县| 建湖县| 隆安县| 英超| 宁南县| 扎鲁特旗| 信阳市| 吴旗县| 河曲县| 滁州市| 靖西县| 合阳县| 南华县| 罗城| 故城县| 苏尼特右旗| 抚顺县| 江都市| 博野县| 同德县| 会理县|