私は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 );
?>
問題は、このコードが機能することです。そして、私がそれを使用したページの 3 つのうち 2 つでは、問題なく動作します。問題は、3 回目にコピーして貼り付けて再度実装したときです。何らかの理由で、ファイルにデータが書き込まれないことを除いて、ファイルがサーバー上に作成されます。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
0777 に書き込む前に、chmod を使用してすべて、フォルダー、テキスト ファイルを設定しようとしましたが、それでも同じ結果が得られます。ファイルは作成されますが、データは書き込まれません。私が見逃しているものや、役立つ可能性のある他のアプローチはありますか? 私はグーグルで何も見つけていません.なぜ同じコードが2回期待どおりに機能したのか、明らかな理由もなく突然停止した理由についてはまだ困惑しています.
前もって感謝します。