在.net core中将没有扩展名的文件从文件夹下载到浏览器上带有扩展名的文件

Downloading a file without extension from a folder to file with extension on browser in .net core

没有扩展名的文件夹中存储了word文件和pdf文件。当我们使用 pdf 视图或 word 查看器打开这些文件时,会呈现相应的文件。 现在的要求是在单击文件名时从 .net 核心应用程序下载这些文件。

下面是代码示例:

public IActionResult Download(int Id)
{
     var fileDetails = GetFileDetailsById(Id);
     string fullpath = Path.Combine(_configuration.GetValue<string>("ServerPath:Documents:FolderPath"), FileNameWithoutExtension);
     List<string> lines = new List<string>();
     StreamReader reader = new StreamReader(fullpath);
     while (!reader.EndOfStream)
     {
         lines.Add(reader.ReadLine());
     }
     byte[] dataAsBytes = lines.SelectMany(s => System.Text.Encoding.UTF8.GetBytes(s + Environment.NewLine)).ToArray();
     var content = new System.IO.MemoryStream(dataAsBytes);
     var contentType = ContentType; // Content ype saved in DB
     var downloadFileName = OriginalFileName;// Original File Name saved in DB
     return File(content, contentType, downloadFileName);
}

“完整路径”的值将是没有扩展名的“\foldername\filename”。

当应用程序为运行时,下载的文件没有扩展名。

我在下载带扩展名的文件时需要帮助。

类似这样的内容可能会帮助您指明正确的方向,因为从评论来看,您似乎在下载 PDF 文件时遇到了问题,即使附加了扩展名。

使用 byte[] bytes = System.IO.File.ReadAllBytes(FilesPath)

创建临时文件路径后
string tempPath = Path.Combine(Path.GetTempPath(),$"{DateTimeOffset.UtcNow.ToUnixTimeSeconds()}.pdf");

之后使用 [=13 创建临时文件=] 以及 BinaryWriter 并将字节写入 BinaryWriter

// Create File Stream,
// Create BinaryWriter So We Can Write A PDF.
using (FileStream fs = new FileStream(tempPath, FileMode.Create))
using (BinaryWriter binaryWriter = new BinaryWriter(fs, Encoding.UTF8))
{
    binaryWriter.Write(bytes);
}

然后您可以 return 向调用者发送 tempPath 并在需要时读取字节。

如果您需要在浏览器中显示 PDF,您需要将 application/pdf 附加到 Response Headers 中的 ContentType,以便浏览器知道如何处理请求。