【问题标题】:Document in byte array to local file from Web Client字节数组中的文档从 Web 客户端到本地文件
【发布时间】:2023-01-19 21:23:54
【问题描述】:

在用户输入时,我从云中获取字节数组(各种格式的文档),然后将此字节数组保存为包含格式的文档。代码在桌面客户端和 Web 客户端上运行(应用程序在服务器上运行,方法从该工具的 Web 应用程序调用)

我有 .NET Framework (4.8) 项目。项目是 BI 工具 Spotfire 的扩展。正如我提到的,项目的源代码在桌面客户端和 Web 客户端上运行。在桌面客户端中,我将标准功能与 SaveFileDialog 类一起使用,并且工作正常。对于 Web 客户端,我遇到了问题,因为我无法打开对话框并且无法将文件保存到本地路径,因为它在服务器和 Web 应用程序上运行。

SaveFileDialog save = new SaveFileDialog();

                save.FileName = documentName;

                switch (documentInfo.type)
                {
                    case MIME_PDF:
                        save.Filter = "PDF(*.pdf)|*.pdf";
                        break;
                    case MIME_DOC:
                        save.Filter = "Word document|*.doc";
                        break;
                    case MIME_DOCX:
                        save.Filter = "DOCX document|*.docx";
                        break;
                    case MIME_XLS:
                        save.Filter = "XLS document|*.xls";
                        break;
                    case MIME_XLSX:
                        save.Filter = "XLSX document|*.xlsx";
                        break;
                }

                if (save.ShowDialog() == DialogResult.OK)
                {
                    byte[] bytes = AWSInvoker.GetS3Document(documentInfo.id);
                    File.WriteAllBytes(save.FileName, bytes);));
                }

这是桌面客户端的代码。如果它在 Web 客户端上运行,我需要做什么: -> 获取字节 -> 从 Web 浏览器下载到本地存储 -> 我必须避免将内容存储在服务器存储上,而是直接从 Web 浏览器运行下载

该应用程序不是 ASP.NET,我无法在 JavaScript 或任何其他前端框架中捕获此功能

【问题讨论】:

    标签: c# arrays .net webclient savefiledialog


    【解决方案1】:

    尝试设置适当的 Content-Disposition 标头并直接从您的控制器返回文件。

    var contentDisposition = new System.Net.Mime.ContentDisposition
    {
        FileName = documentName,
        Inline = false // Always download directly
    };
    Response.AppendHeader("Content-Disposition", contentDisposition.ToString());
    
    byte[] bytes = AWSInvoker.GetS3Document(documentInfo.id);
    
    return File(bytes, documentInfo.type);
    

    【讨论】:

      猜你喜欢
      • 2011-10-11
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      相关资源
      最近更新 更多