在.net核心中,将一个没有扩展名的文件从文件夹下载到浏览器上的扩展名文件



有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);
}

"的值;全路径";将是";\文件夹名\文件名"无需扩展。

当应用程序运行时,下载的文件不带扩展名。

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

这样的东西可能有助于为您指明正确的方向,因为从评论中可以看出,即使附加了扩展名,您在下载PDF文件时也会遇到问题

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

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

之后,使用FileStreamBinaryWriter创建临时文件,并将字节写入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);
}

然后可以将tempPath返回给调用者,并在需要时读取字节

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

相关内容

  • 没有找到相关文章

最新更新