gpt4 book ai didi

c# - 我可以显示 PDF,但不允许在网站中链接到它吗?

转载 作者:行者123 更新时间:2023-12-02 11:56:33 25 4
gpt4 key购买 nike

我有一个网站,其中有一堆预先创建并位于网络服务器上的 PDF。

我不想让用户只需输入 URL 即可获取 PDF 文件(即 http://MySite/MyPDFFolder/MyPDF.pdf )

我只想在加载并显示它们时允许查看它们。

我以前也做过类似的事情。我使用 PDFSharp 在内存中创建 PDF,然后将其加载到如下页面:

protected void Page_Load(object sender, EventArgs e)
{
try
{
MemoryStream streamDoc = BarcodeReport.GetPDFReport(ID, false);
// Set the ContentType to pdf, add a header for the length
// and write the contents of the memorystream to the response
Response.ContentType = "application/pdf";
Response.AddHeader("content-length", Convert.ToString(streamDoc.Length));
Response.BinaryWrite(streamDoc.ToArray());
//End the response
Response.End();
streamDoc.Close();
}
catch (NullReferenceException)
{
Communication.Logout();
}


}

我尝试使用此代码从文件中读取数据,但无法弄清楚如何获取 MemoryStream 来读取文件。

我还需要一种方法来表明“/MyPDFFolder”路径不可浏览。

感谢您的建议

最佳答案

要将 PDF 文件从磁盘加载到缓冲区中:

byte [] buffer;
using(FileStream fileStream = new FileStream(Filename, FileMode.Open))
{
using (BinaryReader reader = new BinaryReader(fileStream))
{
buffer = reader.ReadBytes((int)reader.BaseStream.Length);
}
}

然后你可以像这样创建你的MemoryStream:

using (MemoryStream msReader = new MemoryStream(buffer, false))
{
// your code here.
}

但是如果您的数据已经存在于内存中,则不需要 MemoryStream。相反,这样做:

    Response.ContentType = "application/pdf";
Response.AddHeader("Content-Length", buffer.Length.ToString());
Response.BinaryWrite(buffer);
//End the response
Response.End();
streamDoc.Close();

关于c# - 我可以显示 PDF,但不允许在网站中链接到它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1223654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com