vue前端 下载、预览图片

前端vue,后端java。 建议使用post请求

javascript 复制代码
api.js
 
DownloadFileById: (config, params) => {
    return service.post(
      "api/GridFS/DownloadFileById",
      config,
      params

    );

  },

a.vue页面

javascript 复制代码
   /**
     * 获取图片
     * responseType: "arraybuffer" 【必传】指定后端返回的是 arraybuffer类型
       指定MIME类型是  type: "image/png"
     */
    queryCheckPic(tempdata, param) {
      this.$luleApi.QueryCheckPic({ responseType: "arraybuffer" }, param).then((res) => {

        // const url = window.URL.createObjectURL(new Blob([res.data]));
        const blob = new Blob([res.data], { type: "image/png" });
        const url = URL.createObjectURL(blob);
        this.fatherData = {
          dataType: "审批流程",
          dataLookType: this.menuType, //==1,是审批,==2 是我的
          ProcessRowData: tempdata,
          imgUrlData: url
        };
        this.$refs.lookReadREF.readDialogVisible = true;
        this.$refs.lookReadREF.dialogTabletitle = "审批流程";
      });
    },


下载文件
    /**
     * 下载 type: "application/octet-stream 指的是二进制流
     */
    Download(data) {
      // localStorage.setItem("xzOK", "1"); //开始下载
      // let param = { Id: data.MongodbIds, FileName: data.DocName };
      let param = {
        Id: "67455ac4fe011820f0c1c8a6",
        FileName: "病人详情-实时监测(1).png"
      };

      this.$luleApi
        .DownloadFileById({ responseType: "arraybuffer" }, param)
        .then((res) => {
          console.log('下载=====', res);

          const fileName = JSON.parse(res.config.data).FileName;
          const blob = new Blob([res.data], { type: "application/octet-stream" });
          debugger
          const url = URL.createObjectURL(blob);
           console.log(url, "下载1");
          const link = document.createElement("a");
          link.href = url;
          link.download = fileName; 
          document.body.appendChild(link);
          link.click();
          document.body.removeChild(link);
          URL.recycleObjectURL(url);
          // localStorage.setItem("xzOK", "0"); //下载成功后,归0
        })
        .catch((err) => { });
    },

扩展:

type属性的所有可能值

type属性指定了Blob对象所包含的数据的MIME类型。MIME类型(多用途互联网邮件扩展类型)是一种标准,用来表示文档、文件或字节流的性质和格式。对于Blob对象来说,type属性的值可以是任何有效的MIME类型,包括但不限于以下一些常见的类型:

  • 文本文件 :
    • text/plain:纯文本
    • text/html:HTML文档
    • text/css:CSS样式表
    • application/json:JSON数据
  • 图片文件 :
    • image/jpeg:JPEG图片
    • image/png:PNG图片
    • image/gif:GIF图片
    • image/svg+xml:SVG图片
  • 音频和视频文件 :
    • audio/mpeg:MP3音频
    • audio/ogg:Ogg Vorbis音频
    • video/mp4:MP4视频
    • video/webm:WebM视频
  • 其他文件类型 :
    • application/pdf:PDF文档
    • application/zip:ZIP压缩文件
    • application/octet-stream:二进制流数据(通常用于未知类型的文件)
相关推荐
多加点辣也没关系12 小时前
JavaScript|第4章:类型转换
开发语言·javascript
yqcoder13 小时前
httpOnly 是什么,又有什么用?
开发语言·前端·javascript
烬羽13 小时前
还在手动拼路径、写回调地狱?一文吃透 Node.js 的 path 和 fs
javascript·程序员·node.js
mONESY13 小时前
LangChain JS 高性能并行执行解析、工具调用底层封装
javascript
迅速的自行车14 小时前
从一段模板说起
前端·javascript·vue.js
YIAN14 小时前
LangChain JS 工具调用实战:基于 DeepSeek-V4-Flash 实现本地文件读取 AI 代码助手(完整可运行源码)
javascript·langchain·前端框架
尼斯湖皮皮怪14 小时前
iceCoder 记忆系统深度分析
前端·javascript
爸爸61915 小时前
07 ArkTS 基础类型与接口定义:从 TypeScript 到鸿蒙的类型升级
javascript·华为·typescript·harmonyos·鸿蒙系统
默_笙16 小时前
🌏 MCP 是 AI 界的 USB-C:一个协议让所有模型都能用上所有工具
前端·javascript
月光刺眼18 小时前
用LangChain 打造第一个 Agent:LLM 大脑与 Tool 手脚的完整闭环
javascript·人工智能·全栈