//二進制保存
var content = "file content!";
var data = new Blob([content],{type:"text/plain;charset=UTF-8"});
var downloadUrl = window.URL.createObjectURL(data);
var anchor = document.createElement("a");
anchor.href = downloadUrl;
anchor.download = "文件名.txt";
anchor.click();
window.URL.revokeObjectURL(data);
var binaryData = [0,0,1,1,1,0,0,0,1,1]; //普通數組
//要保存的數據是10個二進制位,但是一個字節是8位,so,需要16位,2個字節
var binLen = binaryData.length;
var byteLen = Math.ceil(binLen/8);
var buffer = new ArrayBuffer(byteLen ); // 開辟兩個字節的緩沖區
var byteData = new Uint8Array(buffer);
for(var i=0; i<byteLen ; i++) { //開始轉化為8進制
byteData[i] = 0;
for(var j=i*8,k=7; k>=0&&j<binLen; j++,k--) {
byteData[i] |= binaryData[j] << k;
//用按位或運算,將8個二進制一組地組合到byteData中
}
}
var data = new Blob([buffer],{type:"application/octet-stream"});
var downloadUrl = window.URL.createObjectURL(data);
var anchor = document.createElement("a");
anchor.href = downloadUrl;
anchor.download = "二進制測試.bin";
anchor.click();
window.URL.revokeObjectURL(data);
var data = new Blob([pdfAsArray],{type:"application/octet-stream"});
var downloadUrl = window.URL.createObjectURL(data);
var anchor = document.createElement("a");
anchor.href = downloadUrl;
anchor.download = "a.pdf";
anchor.click();
window.URL.revokeObjectURL(data);
//將流生成文件
function dataURLtoBlob(data) {//data是文件流
var bstr = $.base64.atob(data));//解碼
var n = bstr.length;
var u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);//轉二進制
}
return new Blob([u8arr], {type:'application/pdf'});//用blob生成pdf文件,返回PDF文件
}
function downFile(blob, fileName) {//blob就是一中返回的文件,fileName是下載文件名
if (window.navigator.msSaveOrOpenBlob) {//msSaveOrOpenBlob方法返回bool值
navigator.msSaveBlob(blob, fileName);//本地保存
} else {
var link = document.createElement('a');//a標簽下載
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
window.URL.revokeObjectURL(link.href);
}
}