URI Data PHP ke Fail: Imej Rosak
Dalam pembangunan web, adalah perkara biasa untuk menghadapi situasi di mana data diterima daripada JavaScript sebagai Data-URI. Satu senario sedemikian melibatkan penyimpanan URI ini ke fail menggunakan PHP. Walau bagaimanapun, sesetengah pengguna telah melaporkan menerima fail imej yang rosak selepas mencuba ini menggunakan kod berikut:
<code class="php">$data = $_POST['logoImage']; $uri = substr($data,strpos($data,",")+1); file_put_contents($_POST['logoFilename'], base64_decode($uri));</code>
Isu ini berpunca daripada fakta bahawa fungsi JavaScript tertentu, seperti canvas.toDataURL(), mengekod kosong sebagai peratusan (%). Walau bagaimanapun, fungsi PHP base64_decode menjangkakan tanda tambah ( ).
Untuk menyelesaikan masalah ini, kod mesti diubah suai untuk menggantikan semua kosong dengan tanda tambah sebelum menyahkod data-URI:
<code class="php">// Replace spaces with pluses $encodedData = str_replace(' ','+',$data); // Decode the modified data-URI $uri = substr($encodedData,strpos($encodedData,",")+1); // Save the decoded data-URI as a file file_put_contents($_POST['logoFilename'], base64_decode($uri));</code>
Dengan melaksanakan pengubahsuaian ini, kod akan menyahkod dan menyimpan Data-URI yang diterima daripada JavaScript dengan betul, menghasilkan fail imej yang utuh.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Imej yang Rosak Apabila Menukar Data-URI kepada Fail dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!