Blob对象方式
import axios from "axios";
const res = await axios.get(path, { responseType: "blob" });
const url = window.URL.createObjectURL(res.data);
const link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.download = '文件名';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
base64方式
import axios from "axios";
const res = await axios.get(fileUrl, { responseType: "blob" });
const reader = new FileReader();
reader.readAsDataURL(res.data);
reader.onload = () => {
const url = reader.result;
const link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.download = '文件名';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};
canvas方式
download(link, picName) {
const img = new Image();
img.src = link
img.setAttribute("crossOrigin", "Anonymous");
img.onload = function () {
const canvas = document.createElement("canvas");
const context = canvas.getContext("2d");
canvas.width = img.width;
canvas.height = img.height;
context.drawImage(img, 0, 0, img.width, img.height);
const url = canvas.toDataURL("images/png");
const link = document.createElement('a');
link.style.display = 'none';
link.href = url;
link.download = '文件名';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};
}