如何在C#中将二进制字节数组保存为PHP文件?

时间:2017-11-06 21:32:25

标签: php file binary save

在C#(ASP.NET MVC)中,我有一个方法可以打开一个文件并将所有文件内容放入字节数组中,如下所示:

byte[] bytes = File.ReadAllBytes(filename);

在PHP方面,我有PHP Slim Framework API方法,该方法是从C#调用的,我做了一个包含这个文件字节数组的POST JSON对象 - >它具有以下属性:

  • myObjectId - int - 我的对象的id
  • filename - string - 文件名
  • fileBytes - array - 此文件的字节数组

您可以在此处获取此JSON内容的演示:https://justpaste.it/1d8jq

在PHP方面,我做了我收到的json_decode:

$fileObject = json_decode($app->request->getBody());

我在成员中得到相同的字节数组:

$fileBytes = $fileObject->fileBytes;

现在的问题是我如何将这个字节数组保存到Word文件中(它是一个Word文件)。我使用这种方法并保存,但内部有一些非常奇怪的内容/奇怪的符号(不是原始内容)......

$binStr = '';
foreach ($fileBytes as $fileByte) 
{
  $binStr .= pack('i', $fileByte);          
}
$binStr .= "\n";
$fileTemp = '/tmp/'.$filename;
file_put_contents($fileTemp, $binStr);

那么,我如何才能正确保存这些字节(这个字节数组在PHP中具有与C#相同的元素/整数 - 看起来像是正确发送的)?)

如果这很重要,C#部分在Windows Server上,PHP在Linux / CentOS服务器上。

1 个答案:

答案 0 :(得分:2)

好像你有一个简单的字节数组作为整数,所以你可以只使用<varno> <xsl:value-of select="substring-before(../item[1], ' ')"/> </varno> 而不是pack。使用一些chr魔法,这可以写成这样。

array_map