替代PHP';s中的file_get_contents

本文关键字:file get contents 中的 PHP 替代 | 更新日期: 2023-09-27 18:26:12

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

现在我正在制作一个Web服务(c#中的webAPI),用户可以通过该服务从移动应用程序发送字节[]中的图像。我需要为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();

从一个样本图像文件中,不同方法的输出是:

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?

今天我已经三天没有陷入这个愚蠢的问题了,我希望。。

任何一个能解决这个问题或采用全新方法的人都是非常可观的。[我唯一不能更改的部分是PHP代码]

替代PHP';s中的file_get_contents

是的,编码集似乎有问题

这对我有效

StreamReader sr = new StreamReader(filePath);
string sContentsa = sr.ReadToEnd();
sr.Close();
        var bodyStream = new StreamReader(Request.InputStream);
        bodyStream.BaseStream.Seek(0, SeekOrigin.Begin);
        var bodyText = bodyStream.ReadToEnd();