Maison  >  Article  >  développement back-end  >  Comment transférer des images via l'interface php

Comment transférer des images via l'interface php

(*-*)浩
(*-*)浩original
2019-10-21 10:33:035177parcourir

Question : lorsque l'application télécharge un avatar, comment PHP, en tant qu'API, doit-il recevoir les informations sur l'image ?

Comment transférer des images via l'interface php

La partie téléchargement du code n'est pas un problème, l'essentiel est de savoir comment le côté serveur peut recevoir les informations sur l'image du côté APP. Sous l'architecture B/S, vous pouvez définir enctype="multipart/form-data" directement via le formulaire, et les informations sur l'image seront dans le tableau $_FILES. Alors, est-ce également vrai en mode C/S ? (Apprentissage recommandé : Tutoriel vidéo PHP)

Réponse 1 (voir méthode 1) : Généralement, la transmission de flux binaire est utilisée. Le client transmet du binaire, le serveur le reçoit, et alors file_put_contents écrit simplement le fichier. Le format du nom de fichier et l'emplacement du fichier sont tous définis par vous-même.

Réponse 2 (voir méthode 2) : Le client Android ou IOS simule une requête HTTP Post au serveur, et le serveur reçoit la requête Post correspondante (obtient les ressources image via $_FILES ) , renvoie les informations de réponse au client. (Cette méthode est la même que la méthode d'obtention de soumission Html)

Crypter l'image dans une chaîne en base64 et la transmettre

Instructions : IOS ou Côté Android : Base64 encode l'image pour obtenir une chaîne, et la transmet à l'interface

Côté interface : Base64 décode la chaîne reçue, puis la télécharge à l'emplacement spécifié via la fonction file_put_contents

/**
     * 图片上传
     * @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;
    }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Comment créer un site Web phpArticle suivant:Comment créer un site Web php