我有一个项目,其中用PHP编写的用户端框架使用 file_get_contents 来读取图像文件并将输出字符串放入DB,然后用于通过从DB读取来向用户显示图像。
现在我正在制作一个web服务(c#中的webAPI),用户通过该服务从移动应用程序发送一个byte []中的图像。我需要为C#找到 file_get_contents 的确切替代方法。
通过网络搜索并找到了两种方法。
byte[] fileData = File.ReadAllBytes(filePath);
string sContents = System.Text.Encoding.ASCII.GetString(fileData);
StreamReader sr = new StreamReader(filePath);
string sContentsa = sr.ReadToEnd();
sr.Close();
从示例图像文件中,不同方法的输出是:
file_get_contents gives : {�PNG\r\n\n\0\0\0\rIHDR\0\0�\0\0�\b\0\0\0���(\0\0\0\tpHYs\0\0\v\0\0\v\0��\0\0\nOiCCPPhotoshop ICC profile\0\0xڝSgTS�}
First c# method: ?PNG\r\n\n\0\0\0\rIHDR\0\0?\0\0?\b\0\0\0???(\0\0\0\tpHYs\0\0\v\0\0\v\0??\0\0\nOiCCPPhotoshop ICC profile\0\0x?SgTS
second c# method: �PNG\r\n\n\0\0\0\rIHDR\0\0�\0\0�\b\0\0\0���(\0\0\0\tpHYs\0\0\v\0\0\v\0��\0\0\nOiCCPPhotoshop ICC profile\0\0xڝSgTS�
所以看起来第二个c#方法生成相同的输出,所以这里出现问题部分:从DB读取值时输出显示如
"?PNG\r\n\n\0\0\0\rIHDR\0\0?\0\0?\b\0\0\0???(\0\0\0\tpHYs\0\0\v\0\0\v\0??\0\0\nOiCCPPhotoshop ICC profile\0\0x?SgTS?
今天我被困在这个愚蠢的问题上已经有3天了,我希望......
任何解决这个问题或全新方法的人都非常感激。 [只有部分我无法改变的是PHP代码]答案 0 :(得分:1)
是的,编码集似乎有问题,
这对我有用
StreamReader sr = new StreamReader(filePath);
string sContentsa = sr.ReadToEnd();
sr.Close();