首页 > 其他 > 详细

后台PDF返回Base64,前台接收预览

时间:2019-12-05 16:25:10      阅读:304      评论:0      收藏:0      [点我收藏+]

读取已存在的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;

 

后台PDF返回Base64,前台接收预览

原文:https://www.cnblogs.com/xiaonangua/p/11989381.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!