我正在用 php 编写一个函数,客户端我有一个画布图像,我使用 toDataUrl() 和一个文件名将图像保存在服务器上。这是代码:
<?php
$imageData=$GLOBALS['HTTP_RAW_POST_DATA'];
$data = json_decode($imageData, true);
$file = $data["file"];
$image = $data["data"];
$filteredData=substr($image, strpos($image, ",")+1);
$unencodedData=base64_decode($filteredData);
$fp = fopen( 'image/' . $file , 'wb' );
fwrite( $fp, $unencodedData);
fclose( $fp );
?>
问题是这段代码有效。对于我使用它的三分之二的页面,它工作正常。问题是当我第三次复制并粘贴它以再次实现它时,由于某种原因,文件是在服务器上创建的,除了没有数据写入文件。我不认为这是客户端的问题,因为我在 javascript 中写入了调试警报消息,并在 PHP 中写入了调试回显,并且两者都能够很好地打印出数据。我制作了这个简短的调试文件:
<?php
$fp = fopen('data.txt', 'wb');
if(is_writable('data.txt')){
echo "file is writable<br>";
}
if(fwrite($fp, 'test') == FALSE){
echo "failed to write data<br>";
}
fclose($fp);
?>
输出是
file is writable
failed to write data
我尝试使用 chmod 并在写入 0777 之前设置所有内容、文件夹、文本文件,但我仍然得到相同的结果;该文件已制作,但没有数据写入其中。有什么我遗漏的东西或任何其他可能有帮助的方法。我在谷歌上没有找到任何东西,并且仍然对为什么相同的代码完全按预期工作两次感到困惑,然后突然无缘无故停止。
提前致谢。