简体   繁体   English

从字节数组返回 PDF 作为 FileContentResult 产生无效文件

[英]Returning PDF as FileContentResult from byte array produces invalid file

I need a link for downloading or viewing a pdf in the browser.我需要一个用于在浏览器中下载或查看 pdf 的链接。 I tried almost every solution but after downloading the pdf file, the file seems broken.我几乎尝试了所有解决方案,但在下载 pdf 文件后,该文件似乎已损坏。

My Controller:我的 Controller:

public ActionResult DownloadKalite(Guid oid)
{
    string contentType = "application/pdf";
    List<KaliteDokumanlari> kalite = db.KaliteDokumanlari.Where(a => a.Oid == oid && a.GCRecord == null).ToList();

    string filename = kalite.Select(y => y.FileData.FileName).FirstOrDefault();
    byte[] filearray = kalite.Select(y => y.FileData.Content).FirstOrDefault();

    return File(filearray, contentType, filename);
}

My download link in view:我的下载链接在视图中:

<div id="panel3d">
    @foreach (var doc in item.KaliteDokumanlari)
    {
        <div>
           @Html.ActionLink(doc.FileData.FileName, "DownloadKalite", new { @oid = doc.Oid })
        </div>
    }
</div>

After download pdf seems ok PDF Error下载后 pdf 似乎没问题 PDF 错误

Try getting the byte into a MemoryStream尝试将字节放入 MemoryStream

var pdfStream= new MemoryStream();    
pdfStream.Write(filearray , 0, filearray .Length);  
pdfStream.Position = 0; 

return File(pdfStream, contentType, filename);

If this does not work store the pdf as base64 string to avoid byte loss.如果这不起作用,请将 pdf 存储为 base64 字符串以避免字节丢失。

Thank you for your help.谢谢您的帮助。 I understand my problem.我明白我的问题。 I created database with xaf.我用 xaf 创建了数据库。 And xaf stored bytes as composed.并且 xaf 将字节存储为组合。 Now it is working, I decompose bytes现在它正在工作,我分解字节

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM