【发布时间】:2021-03-31 02:14:00
【问题描述】:
我使用支持将文档作为附件的 Web 服务。 我可以获得文件名、文件内容、mime 类型等,但我无法将其转换为工作文件。我尝试在我的计算机上打开文件,但不知何故损坏了。
在这种情况下,我得到的文档是 pdf,因此我尝试对扩展进行硬编码以使其正常工作。在此之后,我将尝试从 mime 类型中获取扩展名,但这不是现在的问题。现在我根本无法在 PDF 阅读器中打开创建的文件,我需要让它工作。
我试过以下代码:
void CreateFileFromDocumentContent(string content, string fileName)
{
string destinationFile = @"wwwroot/" + fileName + ".pdf";
FileInfo fi = new FileInfo(destinationFile);
try
{
// Create a new file
using (FileStream fs = File.Create(destinationFile))
{
// Add some text to file
Byte[] fileContent = new UTF8Encoding(true).GetBytes(content);
fs.Write(fileContent, 0, fileContent.Length);
}
// Write file contents on console.
using (StreamReader sr = File.OpenText(destinationFile))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
System.Diagnostics.Debug.Print(s);
}
}
}
catch (Exception Ex)
{
System.Diagnostics.Debug.Print(Ex.Message);
}
}
我正在将文件内容写入控制台。 它看起来像 JVBERi0xLjMNCiX/////MTI3NQ0KMSAwIG9iag0KPDwNCi9UeXBlIC9DYXRhbG9nDQovUGFnZXMgNCAwIFINCi9PdXRsaW5lcyAyIDAgUg0KPj4NCmVuZG9iag0KMiAwIG9iag0KPDwNC ..... 它可能是文件内容本身。它看起来与 webservice 文件内容相同。
我尝试将文件编写为纯文本(不是我的代码示例中的字节),但它也不起作用。
我猜有些东西不见了。该网络服务也被第三方软件使用,并且在他们的解决方案中查找相同的文件可以正常工作,因此文件本身很好。
【问题讨论】:
-
不知道更多,我很确定来自 API 的答案不是代表 PDF 文件的 UTF-8 编码字符串。相反,它可能是一个 base64 字符串,表示构成文件的原始字节。使用
Convert.FromBase64String方法并将原始字节保存到文件中 -
观察力不错。那成功了!非常感谢。
-
没问题,我决定在下面发布一个答案,看看我的猜测是如何正确的
标签: c# .net windows file blazor