0
点赞
收藏
分享

微信扫一扫

input type=‘file‘ 获取文件 fileReader同步文件加载

一叶随风_c94d 2022-04-24 阅读 54

fileReader的load事件是异步的 通过promise使其同步加载

export const loadFileAsync = (file: File): Promise<string | ArrayBuffer> =>
  new Promise((resolve, reject) => {
    const fileReader = new FileReader();
    fileReader.readAsDataURL(file);
    fileReader.onload = (e) => {
      resolve(e.target?.result ? e.target.result : "");
    };
    fileReader.onerror = (e) => {
      reject(e);
    };
  });
<input
  type="file"
  accept="image/*"
  onChange={async (e) => {
    if (e.target.files) {
      const res = await loadFileAsync(e.target.files[0]);
      res && changeImage({ ...params, url: res as string, objectFit: "fill" });
    }
  }}
    />

不转换base64

URL.createObjectURL(e.target.files[0])
举报

相关推荐

0 条评论