Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebt man beschädigte Bilder beim Konvertieren von Daten-URIs in Dateien in PHP?

Wie behebt man beschädigte Bilder beim Konvertieren von Daten-URIs in Dateien in PHP?

DDD
DDDOriginal
2024-10-23 08:52:29986Durchsuche

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

PHP-Daten-URI zur Datei: Beschädigte Bilder

Bei der Webentwicklung kommt es häufig zu Situationen, in denen Daten von JavaScript als empfangen werden Daten-URI. Ein solches Szenario besteht darin, diesen URI mithilfe von PHP in einer Datei zu speichern. Einige Benutzer haben jedoch berichtet, dass sie beschädigte Bilddateien erhalten haben, nachdem sie dies mit dem folgenden Code versucht haben:

<code class="php">$data = $_POST['logoImage'];
$uri = substr($data,strpos($data,",")+1);
file_put_contents($_POST['logoFilename'], base64_decode($uri));</code>

Dieses Problem ist auf die Tatsache zurückzuführen, dass bestimmte JavaScript-Funktionen, wie z. B. canvas.toDataURL(), Leerzeichen als Prozentsätze kodieren (%). Allerdings erwartet die PHP-Funktion base64_decode Pluszeichen ( ).

Um dieses Problem zu lösen, muss der Code geändert werden, um alle Leerzeichen durch Pluszeichen zu ersetzen, bevor der Daten-URI dekodiert wird:

<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>

Durch die Implementierung dieser Änderung dekodiert und speichert der Code die von JavaScript empfangenen Daten-URIs korrekt, was zu intakten Bilddateien führt.

Das obige ist der detaillierte Inhalt vonWie behebt man beschädigte Bilder beim Konvertieren von Daten-URIs in Dateien in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn