J'ai un serveur sur lequel j'envoie des fichiers encoder en base64. Arrive sur le serveur, je reconvertis ces fichiers en leur format de depart puis les enregistre quelques sur le serveur. Le scrip[t fonction tres bien pour des fichiers images pas trop lourds. mais lorsqu'ils s'agit de convertir des fichiers plus lourd comme les videos, le script ne donne pas le resultat voulu. Les videos ne sont pas convertis parfois, et lorsque c'est fait j'obtiens une courte video de 3 a 4 secondes toute noir. Quelqu'un peut m'aider?
Voici mon serveur PHP, il est encrit en php avec Slim:
$app->post('/post', function($request, $response, $args) use($app){
$data = str_replace('data:video/mp4;base64,', '', $request->getParam('base64_string'));
$data = str_replace(' ', '+', $request->getParam('base64_string'));
$data = base64_decode($request->getParam('base64_string'));
$file = 'uploads/' . uniqid() . '.mp4';
$success = file_put_contents($file, $data);
});
Bonsoir.
Commences déja a bien étudier ton code.
Quel est l'intérêt d'écraser à chaque fois une variable que tu définis précédemment ?
En fait, le code suivant, c'est comme-ci tu ne faisais rien :
$data = str_replace('data:video/mp4;base64,', '', $request->getParam('base64_string'));
$data = str_replace(' ', '+', $request->getParam('base64_string'));
$data = base64_decode($request->getParam('base64_string'));
Seulement la dernière de ces lignes servira à quelque chose, sauf que pour les deux précédentes c'est comme-ci tu n'avais rien fait.
C'est pas la mon probleme, je fais des test et ca a marché avec des images. J'aimerais savoir pourquoi ca craque quand c'est un fichier plutot lourd et comment resoudre ca.
Tu dis que ton problème ne se situe pas là, alors que c'est pourtant le cas, pour faire un exemple simple, c'est comme ci tu faisais :
$animal = 'chat';
$animal = 'chien';
$animal = 'renard';
Si tu fais un echo
par la suite de la variable $animal
, tu ne te retrouvera qu'avec renard
, donc c'est comme-ci les deux lignes précédentes ne servaient à rien, puisque tu ne fais qu'écraser la variable à chaque fois en lui définissant une nouvelle valeur, sauf que ce n'est que la dernière définition qui sera prise en compte, donc pour ton code, c'est comme ci tu ne faisais que :
$app->post('/post', function($request, $response, $args) use($app){
$data = base64_decode($request->getParam('base64_string'));
$file = 'uploads/' . uniqid() . '.mp4';
$success = file_put_contents($file, $data);
});
Je vois donc mal comment le problème ne peut pas se situer comme je te l'ai dit dans l'écrasement de ta variable $data
.