Heim > Artikel > Backend-Entwicklung > So übertragen Sie Bilder über die PHP-Schnittstelle
Frage: Wie soll PHP als API Bildinformationen empfangen, wenn die APP einen Avatar hochlädt?
Der Upload-Teil des Codes ist kein Problem, die Hauptsache ist, wie die Serverseite die Bildinformationen von der APP-Seite empfangen kann. Unter der B/S-Architektur können Sie enctype="multipart/form-data" direkt über das Formular festlegen, und die Bildinformationen befinden sich im Array $_FILES. Gilt das also auch im C/S-Modus? (Empfohlenes Lernen: PHP-Video-Tutorial)
Antwort 1 (siehe Methode 1): Im Allgemeinen wird die binäre Stream-Übertragung verwendet, der Client empfängt sie und dann schreibt file_put_contents einfach die Datei. Das Dateinamenformat und der Speicherort der Datei legen Sie selbst fest.
Antwort 2 (siehe Methode 2): Der Android- oder IOS-Client simuliert eine HTTP-Post-Anfrage an den Server, und der Server empfängt die entsprechende Post-Anfrage (erhält Bildressourcen über $_FILES). , Antwortinformationen an den Client zurückgeben. (Diese Methode ist die gleiche wie die Methode zum Erhalten der HTML-Übermittlung)
Verschlüsseln Sie das Bild in einen String mit Base64 und übertragen Sie es
Anweisungen: IOS oder Android-Seite: Base64 kodiert das Bild, um eine Zeichenfolge zu erhalten, und übergibt es an die Schnittstelle
Schnittstellenseite: Base64 dekodiert die empfangene Zeichenfolge und lädt sie dann über die Funktion „file_put_contents“ an den angegebenen Speicherort hoch
/** * 图片上传 * @param $imginfo - 图片的资源,数组类型。['图片类型','图片大小','图片进行base64加密后的字符串'] * @param $companyid - 公司id * @return mixed */ public function uploadImage( $imginfo , $companyid ) { $image_type = strip_tags($imginfo[0]); //图片类型 $image_size = intval($imginfo[1]); //图片大小 $image_base64_content = strip_tags($imginfo[2]); //图片进行base64编码后的字符串 $upload = new UploaderService(); $upconfig = $upload->upconfig; if(($image_size > $upconfig['maxSize']) || ($image_size == 0)) { $array['status'] = 13; $array['comment'] = "图片大小不符合要求!"; return $array; } if(!in_array($image_type,$upconfig['exts'])) { $array['status'] = 14; $array['comment'] = "图片格式不符合要求!"; return $array; } // 设置附件上传子目录 $savePath = 'bus/group/' . $companyid . '/'; $upload->upconfig['savePath'] = $savePath; //图片保存的名称 $new_imgname = uniqid().mt_rand(100,999).'.'.$image_type; //base64解码后的图片字符串 $string_image_content = base64_decode($image_base64_content); // 保存上传的文件 $array = $upload->upload($string_image_content,$new_imgname); return $array; }
// 上传配置信息 public $upconfig = array( 'maxSize' => 3145728, //3145728B(字节) = 3M 'exts' => array('jpg', 'gif', 'png', 'jpeg'), // 'rootPath' => './Public/Uploads/info/', 'rootPath' => 'https://www.eyuebus.com/Public/Uploads/info/', ); /** * @param $string_image_content - 所要上传图片的字符串资源 * @param $new_imgname - 图片的名称,如:57c14e197e2d1744.jpg * @return mixed */ public function upload($string_image_content,$new_imgname) { $res['result'] = 1; $res['imgurl'] = ''; $res['comment'] = ''; do { $ret = true; $fullPath = $this->upconfig['rootPath'] . $this->upconfig['savePath']; if(!file_exists($fullPath)){ $ret = mkdir($fullPath, 0777, true); } if(!$ret) { // 上传错误提示错误信息 $res['result'] = 12; $res['comment'] = "创建保存图片的路径失败!"; return $res; break; } //开始上传 if (file_put_contents($fullPath.$new_imgname, $string_image_content)){ // 上传成功 获取上传文件信息 $res['result'] = 0; $res['comment'] = "上传成功!"; $res['imgname'] = $new_imgname; }else { // 上传错误提示错误信息 $res['result'] = 11; $res['comment'] = "上传失败!"; } } while(0); return $res; }
Das obige ist der detaillierte Inhalt vonSo übertragen Sie Bilder über die PHP-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!