有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");
之后,使用FileStream
和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);
}
然后可以将tempPath
返回给调用者,并在需要时读取字节
如果需要在浏览器中显示PDF,则需要将application/pdf
附加到Response Headers
中的ContentType,以便浏览器知道如何处理请求。