一、使用uniapp內置的downloadFile
uniapp提供了一個下載文件的API:downloadFile。通過該API可以簡單地實現文件下載。具體使用方法如下:
uni.downloadFile({ url: 'http://example.com/file.zip', success: (res) => { if (res.statusCode === 200) { uni.saveFile({ tempFilePath: res.tempFilePath, success: function(res) { console.log('文件下載並保存成功'); } }); } } });
以上代碼會從http://example.com/file.zip路徑下載文件,並將文件保存到本地。當然,也可以自定義下載的文件名和路徑。
二、使用原生XMLHttpRequest
如果需要更精細化地控制文件下載過程,可以使用XMLHttpRequest。XMLHttpRequest是瀏覽器提供的原生API,可以通過它發起HTTP請求,實現文件下載功能。uniapp也提供了XMLHttpRequest的封裝,即uni.request。下面是使用XMLHttpRequest實現文件下載的代碼示例:
uni.request({ url: "http://example.com/file.zip", method: "GET", responseType: "arraybuffer", success: (response) => { const fileData = new Uint8Array(response.data); const blob = new Blob([fileData], {type: "application/octet-stream"}); const url = URL.createObjectURL(blob); const elem = window.document.createElement('a'); elem.href = url; elem.download = "file.zip"; document.body.appendChild(elem); elem.click(); document.body.removeChild(elem); }, });
以上代碼實現了從遠程URL下載文件,並通過Blob和URL.createObjectURL將二進位內容轉化為可下載的URL。最終會通過創建一個下載鏈接來觸發文件下載。需要注意的是,這裡的responseType必須為arraybuffer,以便正確地處理二進位數據。
三、使用第三方庫
如果需要更高級的功能,比如下載進度條、斷點續傳等,可以使用一些優秀的第三方庫來實現。這裡介紹兩個常用的第三方庫:axios和downloadjs。
axios是基於Promise的HTTP客戶端庫,支持瀏覽器和Node.js環境。它提供了一些方便的方法來處理HTTP請求和響應。下面是使用axios實現文件下載的示例:
axios({ url: 'http://example.com/file.zip', method: 'GET', responseType: 'blob', onDownloadProgress: function(progressEvent) { const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total); console.log(percentCompleted); }, }).then((response) => { const url = window.URL.createObjectURL(new Blob([response.data])); const link = document.createElement('a'); link.href = url; link.setAttribute('download', 'file.zip'); document.body.appendChild(link); link.click(); });
以上代碼使用axios下載文件,並通過onDownloadProgress回調函數實現了下載進度的監聽。同時,利用Blob和URL.createObjectURL將返回的二進位數據轉化為可供下載的URL。
downloadjs是專門用於瀏覽器文件下載的庫,提供了非常簡單的API。下面是使用downloadjs實現文件下載的示例:
download('http://example.com/file.zip', 'file.zip', 'application/octet-stream');
以上代碼使用downloadjs下載文件,並指定文件名和MIME類型。downloadjs還可以自動處理斷點續傳等高級功能,非常方便實用。
四、小結
本文介紹了幾種實現uniapp文件下載的方法,包括內置downloadFile、原生XMLHttpRequest、第三方庫axios和downloadjs。使用這些方法可以簡單方便地實現文件下載功能,同時也能夠實現更高級的特性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/295244.html