欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 下載流

傅智翔1年前7瀏覽0評論

JavaScript 下載流是指將服務器端的數據流通過前端的 JavaScript 代碼將文件下載到用戶的電腦或移動設備,具有非常廣泛的應用場景,比如使用 JavaScript 將 Excel 表格文件下載到本地,或者將圖片或 PDF 文件下載到設備中。在這篇文章中,我們將詳細介紹如何使用 JavaScript 下載流來實現文件下載功能。

在開始介紹如何使用 JavaScript 下載流之前,首先需要了解如何將一個二進制文件流轉換成實際的文件。我們可以使用 Blob 對象將二進制數據轉換為文件,如下所示:

// data 表示服務器返回的二進制數據
var blob = new Blob([data], { type: 'application/octet-stream' });
var url = window.URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = fileName;
a.click();
window.URL.revokeObjectURL(url);

這段代碼中,我們首先使用 Blob 對象將二進制數據轉換為一種類似文件的對象,然后使用 URL.createObjectURL() 將 Blob 對象轉換為 URL 地址。接著,我們創建一個標簽并設置它的 href 屬性為轉換后的 URL 地址,設置 download 屬性為文件名,并將其通過 click() 方法觸發下載。最后,使用 window.URL.revokeObjectURL() 釋放 URL。

接下來,我們來看一些示例。首先,我們使用上述代碼實現一個將 Excel 文件下載到本地的函數,如下:

function downloadExcel() {
fetch('/download/excel')
.then(res =>res.arrayBuffer())
.then(buffer =>{
var blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
var url = window.URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = 'demo.xlsx'; // 文件名為 demo.xlsx
a.click();
window.URL.revokeObjectURL(url);
});
}

上面的代碼通過 fetch 獲取服務器端返回的 Excel 文件,然后將其轉換為 Blob 對象,并設置文件名為 demo.xlsx,最后進行下載。如果服務器端返回的不是二進制數據,我們還需要進行數據轉換。下面是一個將 JSON 數據轉換為 CSV 格式并下載到本地的示例:

function downloadCSV() {
var data = [
{ name: '張三', age: 18 },
{ name: '李四', age: 20 },
{ name: '王五', age: 22 }
];
var csv = '姓名,年齡\n';
data.forEach(row =>{
csv += row.name + ',' + row.age + '\n'; // 將每行數據轉換為 CSV 格式
});
var blob = new Blob([csv], { type: 'text/csv;charset=utf-8' });
var url = window.URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = 'demo.csv'; // 文件名為 demo.csv
a.click();
window.URL.revokeObjectURL(url);
}

上述代碼中,我們將數組數據轉換為 CSV 格式,并將其轉換為 Blob 對象,最后進行下載。可以看到,通過 JavaScript 下載流可以實現非常強大的文件下載功能,豐富了網頁的交互性和用戶體驗。