Nicht hochladen, die eine base64-codierte Bild mit Codeigniter
Muss ich hochladen, die eine base64-codierte Bild, das ich erhalte von android-Anwendung. Ich bin php codeigniter-framework.
Während der Suche durch das forum, die Frage unter diesem link Wie hoch base64encoded Bild in codeigniter ist die gleiche wie meine, aber die Lösung gibt es nicht für mich arbeiten.
Hier ist der code, den ich geschrieben habe:
private function _save_image() {
$image = base64_decode($_POST['imageString']);
#setting the configuration values for saving the image
$config['upload_path'] = FCPATH . 'path_to_image_folder';
$config['file_name'] = 'my_image'.$_POST['imageType'];
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '2048';
$config['remove_spaces'] = TRUE;
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if($this->upload->do_upload($image)) {
$arr_image_info = $this->upload->data();
return ($arr_image_info['full_path']);
}
else {
echo $this->upload->display_errors();
die();
}
}
Bin ich immer "du hast nicht wählen Sie eine Datei zum hochladen" -
Vielen Dank für Ihre Zeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Fehler Auftritt, weil codeigniter die upload-Bibliothek Blick in die
$_FILES
superglobale zu und suchen Sie einen index aus, den Sie geben es an diedo_upload()
nennen.Weiterhin (zumindest in der version 2.1.2), auch wenn Sie die $_FILES superglobale imitieren das Verhalten einer Datei hochladen, es würde nicht passieren, weil die upload-Bibliothek verwendet is_uploaded_file zu erkennen, genau diese Art der Manipulation mit superglobals. Sie können verfolgen Sie den code in system/libraries/Upload.php:134
Ich habe Angst, dass Sie zu re-implementieren Sie die Größe prüfen und Dateien umbenennen und verschieben (würde ich tun) oder Sie können ändern, codeigniter weglassen, dass der check, aber es könnte die Aktualisierung der Rahmen später schwierig.
Speichern Sie die $image-variable den Inhalt in eine temporäre Datei, und die Einrichtung der
$_FILES
wie folgt Aussehen:Ändern der upload-Bibliothek. Sie können die Nutzung von codeigniter ist gebaut dadurch Verlängern, Nativen Bibliotheken, und definieren Sie einen My_Upload (oder Ihr Präfix) Klasse, copy-paste die do_upload-Funktion und ändern Sie die folgenden Zeilen:
zu:
und die:
zu:
und in Ihrem controller, call do_upload() mit der fließenden Parameter:
$_FILES
aktualisiert, die Beispiel, das sollte zu beheben Fehler.$this->upload
Instanz im Controller.print get_class($this->upload);
zeigen sollteMY_upload
.Sind Sie sich bewusst, dass, wenn Sie erhalten eine Base64-codierte Bild als string, dann Sie nicht müssen, verwenden Sie die Upload-Klasse.
Statt, Sie brauchen nur, Sie zu entschlüsseln mit base64_decode und verwenden Sie dann fwrite/file_put_contents zum speichern der entschlüsselten Daten...
Credit: http://board.phpbuilder.com/showthread.php?10359450-RESOLVED-Saving-Base64-image.