Maison >développement back-end >tutoriel php >Comment gérer les espaces dans les URI de données lors de la conversion de fichiers en PHP ?
Comment convertir l'URI de données en un fichier en PHP
Lorsque vous essayez d'enregistrer un URI de données reçu de JavaScript à l'aide de PHP, en utilisant le le code suivant peut entraîner un fichier image corrompu :
<code class="php">$data = $_POST['logoImage']; $uri = substr($data, strpos($data, ",") + 1); file_put_contents($_POST['logoFilename'], base64_decode($uri));</code>
La raison sous-jacente est la présence d'espaces dans l'URI des données qui doivent être convertis en signes plus.
Solution :
La documentation PHP suggère que pour les données dérivées d'une fonction Javascript canvas.toDataURL(), les espaces doivent être remplacés par des signes plus avant le décodage.
<code class="php">$encodedData = str_replace(' ', '+', $encodedData); $decodedData = base64_decode($encodedData);</code>
Intégrer cette modification dans le code d'origine devrait enregistrer avec succès le fichier image :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!