首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:将Base64字符串转换并保存为文件

错误:将Base64字符串转换并保存为文件
EN

Stack Overflow用户
提问于 2017-12-26 07:08:37
回答 5查看 5.5K关注 0票数 0

*编辑

对不起,我对这件事可能不太清楚。抛出错误的代码是:

代码语言:javascript
运行
复制
Convert.FromBase64String(base64)

除了上面的方法外,是否有另一种方法将base64字符串转换为C#中的字节?

我需要帮助使用C#进行文件转换。我正在尝试将base64字符串转换为文件并将其保存到我的桌面中。要保存的文件要么是文本excel,要么是pdf文件。我使用的代码是:

代码语言:javascript
运行
复制
File.WriteAllBytes(@"C:\Users\User\Desktop\{thefilename}", Convert.FromBase64String(base64));

但是,我收到了一个错误:

输入不是有效的基- 64字符串,因为它包含一个非基本的64个字符、两个以上的填充字符或填充字符中的一个非法字符。

我尝试将base64保存到文本文件中,首先是,然后使用https://www.freeformatter.com/base64-encoder.html来转换它,以检查base64是否真的是正确的格式。当我这样做时,它将base64转换为它的原始文件

我可以问一下我如何解决这个错误吗?这个错误是由C#的限制引起的还是因为我所拥有的base64?我不认为这是后者,因为我能够把它在线转换成它的实际文件。除了上面使用的方法之外,还有其他方法可以将base64转换为C#中的文件吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-12-26 09:42:45

我可能已经找到了我错误的答案。我能够通过打开保存我的base64字符串的文本文件来解决这个错误,然后通过删除填充并再次添加来更新它。步骤是这样的:

  1. 将base64字符串保存到文本文件中
  2. 打开文本文件
  3. 除去填充物
  4. 保存文件。
  5. 重新添加移除的填充物
  6. 保存文件。
  7. 从两次更新的文本文件中获取base64字符串
  8. 调用方法Convert.FromBase64String(base64String);

我不知道是什么引起了这个问题。有人知道为什么会这样吗?或者这是Windows问题、C#问题还是两者兼而有之?

票数 0
EN

Stack Overflow用户

发布于 2017-12-26 07:21:45

我怀疑您的Base64String具有类似于data:image/pdf;base64的前缀。因此,在转换为字节数组之前,您应该删除它。

代码语言:javascript
运行
复制
base64 = base64.Replace("data:image/pdf;base64,","");
File.WriteAllBytes(@"C:\Users\User\Desktop\{thefilename}", Convert.FromBase64String(base64));
票数 1
EN

Stack Overflow用户

发布于 2017-12-26 08:49:01

如果base64字符串的长度不是4.i,e的倍数,则必须将"=“放置在字符串的右侧。

如果Base64字符串长为7个字符,则添加1 "="s

如果Base64字符串长为6个字符,则添加2 "="s

如果Base64字符串是5个字符长,那么我们的字符串已经损坏。因此,不可能出现base64字符串长度为1、5、11、16等情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47975103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档