根据后端接口返回来的文件流可以根据浏览器自身打开,如果预览的是zip文件格式的话,会自动打开网页并下载

390 阅读1分钟

1.浏览器默认可以预览视频、图片、pdf等文件。

2.如果浏览器预览不了的文件,拿到对应的文件流并打开网页会直接弹出文件夹并下载。

/**
 * 文件预览和下载
 * @param uuid 文件的uuid 通过uuid 获取文件流数据
 * @param type 判断是否是 预览和 下载
 * @param filename 文件名字
 * @param name 当前下载的文件流
 * @param item 是后端给我当前文件的所有数据
 */
export const previewDownfile = (uuid, type, filename,name,item) => {
	console.log("item",item)
	if (uuid) {
		download(uuid).then((res) => {//download 是请求文件流
			if (type == 'down') { //下载
				let blob = new Blob([res], {
					type: 'application/octet-stream',
					'Content-Disposition': 'attachment'
				});
				const link = document.createElement("a"); //创建a标签
				let objectUrl = window.URL.createObjectURL(blob);
				link.style.display = "none";
				link.href = objectUrl;
				link.download = filename;
				document.body.appendChild(link);
				link.click();
				URL.revokeObjectURL(link.href);
				document.body.removeChild(link);
			} else { //预览 如果打开网页不能预览,浏览器会自动弹出下载框
				let blob = new Blob([res], { //name 形参为当前文件流属于什么格式的文件
					type: `${name};charset-UTF-8`
				});
				window.open(window.URL.createObjectURL(blob))
			}
		});
	}
}