预览PDF文件(读取文件流方式)

本文介绍了一个使用C#实现的从服务器读取并预览PDF文件的方法。通过 dbContext 和 System.IO 命名空间,代码展示了如何根据用户身份获取PDF文件,并通过FileStreamResult返回,使用户能在浏览器中预览。适用于需要在Web应用中集成PDF预览功能的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 @if (list != null && list.Count>0)
            {
                <tr>
                    <td>申请表</td>
                    <td><a href="/policy/declare/readPDF/?coinfigid=@ViewBag.coinfigid" target="_blank" class="layui-btn layui-btn-normal layui-btn-xs">预览</a></td>
                </tr>
                if (ViewBag.hascheck == 1)
                {
                    <tr>
                        <td>确认单</td>
                        <td><a href="/policy/declare/readPDF/?coinfigid=@ViewBag.coinfigid&type=1" target="_blank" class="layui-btn layui-btn-normal layui-btn-xs">预览</a></td>
                    </tr>
                }
                foreach (var item in list)
                {
                    <tr>
                        <td>@item.contractname</td>
                        <td><a href="/policy/declare/readPDF/?id=@item.ID&coinfigid=@ViewBag.coinfigid" target="_blank" class="layui-btn layui-btn-normal layui-btn-xs">预览</a></td>
                    </tr>
                }
            }
服务端:
/// <summary>
        /// 读取PDF文件
        /// </summary>
        /// <param name="fName">文件名称(可以从其他地方传进来)</param>
        /// <returns></returns>
        public FileStreamResult readPDF(string coinfigid, int id = 0, int ischeck = 0)
        {
            var model = dbContext.policy_declaredata.FirstOrDefault(m => m.username == LoginUser);
            var hetong = dbContext.policy_tradeproject.FirstOrDefault(m => m.ID == id && m.username == LoginUser);
            if (model == null)
            {
                GoTo404();
            }
            if (id != 0 && hetong == null)
            {
                GoTo404();
            }
            string pdfurl = string.Empty;
            string filename = string.Empty;
            if (id == 0)
            {
                if (ischeck == 1)
                {
                    //确认单
                    pdfurl = System.Web.HttpContext.Current.Server.MapPath("/files/policy/" + LoginUser +
                         "/" + coinfigid );
                    filename = "check.pdf";
                }
                else
                {
                    //申请表
                    pdfurl = System.Web.HttpContext.Current.Server.MapPath("/files/policy/" + LoginUser +
                         "/" + coinfigid );
                    filename = "info.pdf";
                }
            }
            else
            {
                pdfurl = System.Web.HttpContext.Current.Server.MapPath("/files/policy/" + LoginUser +
                         "/" + coinfigid );
                filename= hetong._id.ToString() + ".pdf";
            }
            DirectoryInfo mydir = new DirectoryInfo(pdfurl);
            string pdfSrc = string.Empty;
            foreach (FileSystemInfo fsi in mydir.GetFileSystemInfos())
            {
                if (fsi is FileInfo)
                {
                    FileInfo fi = (FileInfo)fsi;
                    string x = System.IO.Path.GetDirectoryName(fi.FullName);
                    string s = System.IO.Path.GetExtension(fi.FullName);
                    if (fi.Name == filename)
                    {
                        pdfSrc = x + "\\" + fi.Name;//pdf路径
                        ViewBag.title = fi.Name;//网页标题
                    }
                }
            }
            FileStream fs = new FileStream(pdfSrc, FileMode.Open, FileAccess.Read);
            return File(fs, "application/pdf");
        }

 

转载于:https://www.cnblogs.com/sophiel/p/9816087.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值