You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.0 KiB
54 lines
2.0 KiB
var __rest = (this && this.__rest) || function (s, e) { |
|
var t = {}; |
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) |
|
t[p] = s[p]; |
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") |
|
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { |
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) |
|
t[p[i]] = s[p[i]]; |
|
} |
|
return t; |
|
}; |
|
import { jsx as _jsx } from "react/jsx-runtime"; |
|
import { Upload } from "antd"; |
|
import React, { useEffect, useState } from "react"; |
|
import { formatImageUrl, getToken, isImageUrl } from "@component/utils"; |
|
import axios from "axios"; |
|
import download from "downloadjs"; |
|
export default function PreviewFile(_a) { |
|
var { fileList } = _a, props = __rest(_a, ["fileList"]); |
|
const api = process.env.REACT_APP_API_URL; |
|
function onPreview(file) { |
|
return getFileUrl(api === null || api === void 0 ? void 0 : api.replace("/base", ""), `${file === null || file === void 0 ? void 0 : file.url}`).then((response) => { |
|
return response.data; |
|
}).then((blob) => { |
|
if (isImageUrl(file.name)) { |
|
const blobs = new Blob([blob], { type: "image/png" }); |
|
const url = URL.createObjectURL(blobs); |
|
window.open(url, "_blank"); |
|
} |
|
else { |
|
download(blob, file.name); |
|
} |
|
}); |
|
} |
|
const [files, setFiles] = useState([]); |
|
useEffect(() => { |
|
Promise.all(fileList).then(res => { |
|
setFiles(res); |
|
}).catch(error => { |
|
console.log(error); |
|
}); |
|
}, [fileList]); |
|
return (_jsx(Upload, { disabled: true, fileList: files, listType: "picture-card", onPreview: onPreview })); |
|
} |
|
//图片url请求接口并将文件流转为地址 |
|
function getFileUrl(api, path) { |
|
return axios.get(`${api}${path}`, { |
|
responseType: "blob", |
|
withCredentials: false, |
|
headers: { |
|
token: getToken() |
|
} |
|
}); |
|
}
|
|
|