这个按钮得入参要文件流形式 , 解决办法
入参为 (文件url,文件name)
async convertImagePathToFile(imgPath, fileName = "mo.jpg", callback) {
function dataURLtoBlob(dataurl, name) {
var arr = dataurl.split(","),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], name, {
type: mime
});
}
const blob = await fetch(imgPath).then(res => res.blob());
// 使用 FileReader 读取 Blob 数据
const reader = new FileReader();
reader.onload = function (e) {
const file = e.target.result;
callback(dataURLtoBlob(file, fileName));
};
reader.readAsDataURL(blob);
},
调用时
async handleAiDialog(file, name) { //触发事件
console.log(file, name, 'aaa')
// return
await this.convertImagePathToFile(
"http://localhost:15271/static/FPRR_AV)))5G)GON41S9)C8.png", //文件url
// file.url,
file.name, //文件name
blob => { //blob为回调函数return文件流
!file.raw && (file["raw"] = blob); //如果file对象不包含raw,则将文件流赋值给他
this.getRskList(name, file["raw"]); //作为后续验证接口入参
},
);
},