后台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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM