【问题标题】:A default path when downloading PDF file in computer/mobile phone电脑/手机下载PDF文件时的默认路径
【发布时间】:2013-07-06 12:43:28
【问题描述】:

我创建了一个 PDF 网络应用程序,用户可以在其中在计算机和手机上生成各种类型的 PDF。但是,我在本地主机上运行我的程序,这就是我根据计算机的文件目录保存 PDF 的方式

var output = new FileStream(Path.Combine("C:\\Users\\apr13mpsip\\Downloads", filename), FileMode.Create);

但是,当我将我的 web 应用程序发布到 azure 上时,我无法从我的电脑和手机上下载。因此我相信这可能是由于我的默认文件目录。

所以我想问一下如何为所有的电脑和手机做一个默认的文件目录?

或者是我在 webapp 在线发布时遗漏了一些必要的东西

谢谢。

PS:我硬编码了一个默认文件路径,以便我在本地主机上测试我的应用程序,以确保完美的工作条件。因此,当所有移动/计算机用户尝试下载 PDF 而不是我通常的硬编码文件路径时,我正在寻找一种方法来为所有移动/计算机用户找到默认的公共文件目录

更新

我尝试使用方法 Server.MapPath 但收到一些错误。

var doc1 = new Document();
        var filename = Server.MapPath("~/pdf") + "MyTestPDF" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".pdf";
       // var output = new FileStream(Path.Combine("C:\\Users\\apr13mpsip\\Downloads", filename), FileMode.Create);

        //iTextSharp.text.pdf.PdfWriter.GetInstance(doc1, output);

        using (var output = File.Create(filename))
        {
            iTextSharp.text.pdf.PdfWriter.GetInstance(doc1, output);
        }


        doc1.Open();

这是我收到的错误

ObjectDisposedException was unhandled by user code
Cannot access a closed file.

【问题讨论】:

    标签: c# asp.net pdf itextsharp


    【解决方案1】:

    当你编写一个 Web 应用程序时,你永远不会使用硬编码的路径,你应该保存文件的最后一个位置是 C:\Users !这是否是 Azure 并不重要。这是任何类型的 Web 应用程序的一般规则!

    在您的情况下,我建议您在应用程序中创建一个名为 pdf 或类似名称的文件夹,并使用以下代码将文件保存在那里:

    var fileName = Server.MapPath("~/pdf") + filename;
    using (var output = File.Create(fileName) )
    {
     // do what you want with that stream
     // usually generate the file and send to the end user
    }
    

    但是还有更有效的方法。使用Response.OutputStream 并将生成的 PDF 直接写入响应。将为您节省大量本地服务器上的空间,以及删除未使用的生成文件的逻辑。

    【讨论】:

    • 我已经更新了关于为什么我最初使用硬编码文件路径的问题,并且我还尝试了您的方法“server.mappath”
    • 为什么要打开doc1?请参阅this SO question 及其答案以了解如何使用 iTextSharp 处理 PDF 创建!因为您的错误现在与 Azure 没有任何关系。其次,我强烈建议您将 PDF 直接写入响应流,除非您想将其保存在持久存储中。 Azure Web Role 中的本地文件系统不是持久存储。
    • 实际上我并没有打算将我的 PDF 存储到 azure 中。我的 PDF 函数实际上只是想通过从特定表中检索数据来生成一个简单的文件,然后将其转换为 PDF 格式。因此,我实际上只需要一个通用方式目录,它可以帮助将我的 PDF 保存在手机和计算机上,而不是将 PDF 保存到 azure 中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    相关资源
    最近更新 更多