Rumah > pembangunan bahagian belakang > masalah PHP > php接口如何传输图片

php接口如何传输图片

(*-*)浩
Lepaskan: 2023-02-27 15:00:02
asal
5262 orang telah melayarinya

问题:APP上传头像,php作为API端应该如何接收图片信息?

php接口如何传输图片

上传部分的代码不是问题,主要是server端如何才能接收到APP端的图片信息。在B/S架构下,可以直接通过form表单设置enctype="multipart/form-data",$_FILES数组中就有了图片信息。那么在C/S模式中,也是如此吗?  (推荐学习:PHP视频教程

 解答1(见方式一): 一般是采用二进制流传输,客户端传的是二进制,服务器端接收,然后file_put_contents写入文件就可以了。文件名格式,文件放哪里,这些自己定义。

 解答2(见方式二):Android或者IOS客户端模拟一个HTTP的Post请求到服务器端,服务器端接收相应的Post请求后(通过$_FILES获取图片资源),返回响应信息给给客户端。(这一种方式和获取Html方式提交的方法一样)

把图片进行base64加密成字符串,进行传输

说明:IOS或者安卓端:通过把图片进行base64编码得到字符串,传给接口

接口端:把接收的字符串进行base64解码,再通过file_put_contents函数,上传到指定的位置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

/**

     * 图片上传

     * @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;

    }

Salin selepas log masuk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

// 上传配置信息

    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;

    }

Salin selepas log masuk

Atas ialah kandungan terperinci php接口如何传输图片. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan