Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membetulkan Imej yang Rosak Apabila Menukar Data-URI kepada Fail dalam PHP?

Bagaimana untuk Membetulkan Imej yang Rosak Apabila Menukar Data-URI kepada Fail dalam PHP?

DDD
DDDasal
2024-10-23 08:52:29984semak imbas

How to Fix Corrupted Images When Converting Data-URIs to Files in PHP?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn