替换为c#c#中的file_get_contents

时间:2015-12-08 16:44:12

标签: c# php

我有一个项目,其中用PHP编写的用户端框架使用 file_get_contents 来读取图像文件并将输出字符串放入DB,然后用于通过从DB读取来向用户显示图像。

现在我正在制作一个web服务(c#中的webAPI),用户通过该服务从移动应用程序发送一个byte []中的图像。我需要为C#找到 file_get_contents 的确切替代方法。

通过网络搜索并找到了两种方法。

  1. byte[] fileData = File.ReadAllBytes(filePath); string sContents = System.Text.Encoding.ASCII.GetString(fileData);

  2. StreamReader sr = new StreamReader(filePath); string sContentsa = sr.ReadToEnd(); sr.Close();

  3. 从示例图像文件中,不同方法的输出是:

    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代码]

1 个答案:

答案 0 :(得分:1)

是的,编码集似乎有问题,

这对我有用

StreamReader sr = new StreamReader(filePath);
string sContentsa = sr.ReadToEnd();
sr.Close();