我在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 );
?>
Run Code Online (Sandbox Code Playgroud)
问题在于此代码有效.对于我使用它的三个页面中的两个,它工作得很好.问题是当我第三次复制并粘贴它以再次实现它时,由于某种原因,文件是在服务器上创建的,除了没有数据写入文件.我不认为这是客户端的问题,因为我在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);
?>
Run Code Online (Sandbox Code Playgroud)
输出是
file is writable
failed to write data
Run Code Online (Sandbox Code Playgroud)
我尝试使用chmod并设置所有内容,文件夹,文本文件,然后写入0777,我仍然得到相同的结果; 制作文件但没有数据写入其中.我有什么遗漏或任何其他可能有帮助的方法.我没有在谷歌上找到任何东西,我仍然感到困惑,为什么相同的代码完全按预期两次突然停止没有明显的原因.
提前致谢.
小智 9
我知道这是一个老帖子,但我有一个非常类似的问题,并找到了解决方案(至少对我而言)!我的服务器上的磁盘空间不足,所以它可能会创建一个0字节的文件,但不会写入它.在我清除了一些空间(删除了13gb error.log文件)之后,一切都按预期再次开始工作.
如果fopen工作,但fwrite神秘地没有,检查你的磁盘空间.'df -h'是检查linux服务器上磁盘空间的命令.
| 归档时间: |
|
| 查看次数: |
14164 次 |
| 最近记录: |