Heim  >  Artikel  >  Backend-Entwicklung  >  So übertragen Sie Bilder über die PHP-Schnittstelle

So übertragen Sie Bilder über die PHP-Schnittstelle

(*-*)浩
(*-*)浩Original
2019-10-21 10:33:035206Durchsuche

Frage: Wie soll PHP als API Bildinformationen empfangen, wenn die APP einen Avatar hochlädt?

So übertragen Sie Bilder über die PHP-Schnittstelle

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn