2017-08-31 2 views
0

Ich bin Bild als Base64 String aus einem Formular übergeben. Dann möchte ich es dekodieren, umbenennen und in meinen Server-Ordner hochladen. Ich kann das nicht zur Arbeit bringen, also mache ich hier offensichtlich etwas falsch. Jede Hilfe wäre willkommen.Decoding Base64 Bild und Upload auf den Server mit PHP

Mein Code:

$image = $_POST['image-data'];//base64 string of a .jpg image passed from form: 

$image = str_replace('data:image/png;base64,', '', $image);//Getting rid of the start of the string: 
$image = str_replace(' ', '+', $image); 
$image = base64_decode($image); 

$ext = strtolower(substr(strrchr($image, '.'), 1)); //Get extension of image 

$lenght = 10; 
$image_name = substr(str_shuffle("123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ"), 0, $lenght); 

$image_name = $image_name . '.' . $ext; //New image name 

$uploaddir = '/var/www/vhosts/mydomain.com/httpdocs/img/'; //Upload image to server 
$uploadfile = $uploaddir . $image_name; 
move_uploaded_file('$image', $uploadfile); 
+1

Warum sind Sie die Datei konvertieren in Ordner vor dem Hochladen? Weitere Informationen zum Umgang mit Dateiuploads in PHP http://php.net/manual/en/features.file-upload.php – jeff

+0

Sie können move_upload_file nicht verwenden (Sie laden keine Datei hoch). Ihre Bilddaten sind als String vorhanden. Ich denke, du musst ein Bild aus der String-Ressource erstellen. GD oder Imagick ist dein Freund;) Speichere das Bild dann als Datei in dein 'Upload Verzeichnis'. – BenRoob

Antwort

1

Datei Mit den gesamten Inhalt von Dateien bewegen kann

$file = $_POST['image-data']; 
      $pos = strpos($file, ';'); 
      $type = explode(':', substr($file, 0, $pos))[1]; 
      $mime = explode('/', $type); 

      $pathImage = "path to move file/".time().$mime[1]; 
      $file = substr($file, strpos($file, ',') + 1, strlen($file)); 
      $dataBase64 = base64_decode($file); 
      file_put_contents($pathImage, $dataBase64); 
+0

Das sieht vielversprechend aus. Allerdings bekomme ich Fehlermeldungen von dieser Zeile: '$ type = explode (':', substr ($ file, 0, $ pos)) [1];' – Jqrp

+0

was ist er fehler – Shibon