下面是我想要做的事情的一个片段:
$file = fopen($path, "wb");
fwrite($file, $data);
fclose($file);很简单。但是当我打开创建的文件时,我看到0x0D插入在0x0A之前。我知道,如果我在没有二进制模式的情况下打开文件,就会发生这种情况。
但是我已经明确地指定了我想要二进制模式。也许我的大脑功能不正常,所以..。有人找到解决办法了吗?
发布于 2015-08-26 08:56:24
结果,由于一些奇怪的原因,问题出在我的$path上。我的$path值是"temp“。
它将生成名为"temp“的文件,但拒绝在二进制模式下打开它。赋予文件一个像"temp.bin“或"temp.tmp”这样的扩展名,允许它在二进制模式下工作。
问题现在已经解决了,但是我仍然在想为什么是这样工作的。
发布于 2020-01-25 11:16:26
看来问题在于$path。请确保您已给出正确的文件路径。
如果要使用动态文件名定义$path,请使用/在文件名之前使用。例如,$var = "/var/www/html/projectFolder/folderFile/“。"Filename.fileformat“
如果在重定向上下文中使用URL,则根目录('/')引用域的根目录。用于链接文件或图像的路径以及包含和要求指令的路径也是如此。
发布于 2015-08-26 07:48:19
你犯了一个典型的错误,就是把数据和数据的表示混淆在一起。
假设你有一个文本文件。如果您在记事本中打开它,您将看到以下内容:
$str = "Hello world!";
echo bin2hex($str); // output: 48656c6c6f20776f726c6421
$file = fopen($path, "wb");
$data = bin2hex($data);
fwrite($file, $data);
fclose($file);https://stackoverflow.com/questions/32220647
复制相似问题