Cara Menukar Data-URI kepada Fail dalam PHP
Apabila cuba menyimpan URI data yang diterima daripada JavaScript menggunakan PHP, menggunakan kod berikut mungkin menyebabkan fail imej rosak:
<code class="php">$data = $_POST['logoImage']; $uri = substr($data, strpos($data, ",") + 1); file_put_contents($_POST['logoFilename'], base64_decode($uri));</code>
Sebab asasnya ialah kehadiran ruang dalam URI data yang perlu ditukar kepada tanda tambah.
Penyelesaian :
Dokumentasi PHP mencadangkan bahawa untuk data yang diperoleh daripada fungsi Javascript canvas.toDataURL(), ruang hendaklah digantikan dengan tanda tambah sebelum penyahkodan.
<code class="php">$encodedData = str_replace(' ', '+', $encodedData); $decodedData = base64_decode($encodedData);</code>
Menggabungkan pengubahsuaian ini ke dalam kod asal harus berjaya menyimpan fail imej:
<code class="php">$data = $_POST['logoImage']; $uri = substr($data, strpos($data, ",") + 1); $encodedData = str_replace(' ', '+', $uri); $decodedData = base64_decode($encodedData); file_put_contents($_POST['logoFilename'], $decodedData);</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ruang dalam URI Data Semasa Penukaran Fail dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!