zoukankan      html  css  js  c++  java
  • 后台PDF返回Base64,前台接收预览

    读取已存在的PDF文件,path为绝对路径

     string base64String = "";
    byte[] buffer=null;
    using (FileStream fs = new FileStream(path, FileMode.Open)) { long fileSize = fs.Length; buffer = new byte[(int)fileSize]; fs.Read(buffer, 0, (int)fs.Length); base64String = Convert.ToBase64String(buffer); } //生成base64后删除原文件 if (System.IO.File.Exists(newPdf)) { System.IO.File.Delete(newPdf); }
                //return File(buffer, "application/ms-pdf", fileName);//返回文件流,前台接收可以直接下载
    return Json(new { success = true, pdfBase64String = "data:application/pdf;base64," + base64String });

    前台接收处理,接收到的字符串赋值到iframe的src上,由于我用的layui,弹出层可以根据type决定类型,type值为2就是iframe弹出层,所以直接就赋值给弹出层了

    function lookInfo(id) {
        layer.load(1);
        $.ajax({
            url: '/Login/DownLoad',
            type: 'post',
            data: {id : id},
            success: function (data) {
                layer.closeAll('loading');
                if (data.success) {
                    layer.open({
                        title: "信息",
                        type: 2,
                        area: ['100%', '100%'],
                        content: data.pdfBase64String
                    });
                } else {
                    layer.msg(data.msg, { icon: 5, time: 2000 });
                }
            }, error: function () {
                layer.closeAll('loading');
                layer.msg('网络错误,请稍后重试', { icon: 5, time: 2000 });
            }
        })
       
    }

     上面后台还注释(橙色字体)了一个返回文件流的方式,这种情况前台直接调用后台路径,就可以下载了。如:

      window.open("/Login/DownLoad?id=" + id);
  • 相关阅读:
    Docker 系列(四):Docker 容器数据卷简单使用
    【QML 动态对象】使用JS中的语句动态创建和销毁组件
    【QML 动态对象】Loader动态加载组件
    vue-cli2.0全局使用sass变量
    两边+居中 布局
    跳转子路由后左侧菜单跳转为空白页,路由地址出错
    el-tree可搜索单选
    el-tree固定高度加滚动条
    前端 权限控制 方式
    综合分析类
  • 原文地址:https://www.cnblogs.com/xiaonangua/p/11989381.html
Copyright © 2011-2022 走看看