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!