前端通过fs模块处理本地图片文件,并将文件上传到服务器

217 阅读1分钟

话不多说直接上代码

注意踩坑问题:new File 接受的对象参数要使用Blob 对象

export const getUploadFileInfo = async (filePath: string, fileName: string) => {
  // 将本地filePath文件转换成 File
  try {
    // 获取本地文件的图片文件对象
    const fileContent = fs.readFileSync(filePath);
    // 将本地文件转为blob
    const blob = new Blob([fileContent], { type: "image/jpeg" });
    // 将blob 转为file
    const file = new File([blob], fileName, { type: "image/jpeg" });
    // 同步获取本地文件大小 和单位,保留两位小数
    const size = (fs.statSync(filePath).size / 1024).toFixed(2);
    // 构建的新`FormData`对象
    const formData = new FormData();
    // 和服务端确认接受的参数名
    formData.append("deviceUid", DeviceUid);
    formData.append("file", file);
    // 上传文件
    const { data } = await uploadFile(formData);
    // 自定义返回结果
    return {
      id: String(data),
      name: String(fileName),
      size: String(size) + "KB",
    };
  } catch (error) {
   console.log(error,'error');
  }
};