php批量上传图片并把图片名放入数据库

 

 

 

前几天工作中要做这样一个功能,有八百多个系统 生成的会员;给这八百多个系统会员上传图片;然后把图片名放入数据库

第一步:

第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类:

?

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

<!--?php

               try {

                    $upload=new Upload();

                    $upload--->set_ext(array(‘zip‘));

                    $path=‘目录名‘;

                    if ( ! Io::mkdir($path)) // 创建目录

                    {

                        throw new Exception("无法创建文件上传目录:$path");

                    }

                    $upload->set_path($path);

                    if(!$upload->is_allow_ext($_FILES[‘files‘][‘name‘]))

                    {

                        $this->show_message(‘必须zip格式数据‘, ‘0‘, NULL, TRUE);

                    }

                    $result=$upload->save($_FILES[‘files‘]);

                    $archive = new Archive_Zip();

                    $archive->set_target($path)->decompress($result[‘file‘]);

                    unlink($result[‘file‘]);//删除使用后的zip;

                $this->show_message(‘导入成功‘, ‘1‘,  array(array(‘text‘=>‘返回导入页面‘,‘href‘=>‘***跳转的链接地址***‘)),TRUE);

 

                }catch(Exception $e){

                    $this->show_message(‘图片导入失败‘, ‘0‘, NULL, TRUE);

                }

            }

?>

 

第二步:

图片上传完成后,就应该把目录下所有的系统会员图片名称取出来,那就得用遍历了。想想也不用那么麻烦了,php自带函数glob();

glob() 函数返回匹配指定模式的文件名或目录。

该函数返回一个包含有匹配文件 / 目录的数组。如果出错返回 false。

 

?

1

2

3

4

5

6

7

8

9

10

11

<!--?php

                //获取目录所有文件并将结果保存到数组    

                foreach(glob("目录名/*") as $d){

                    $tmp=explode(‘.‘,$d);

                    $k=end($tmp);

                    //如果是文件,并且后缀名为jpg png的文件

                    if(is_file($d)&&in_array($k,array(‘jpg‘,‘png‘))){

                          $files[]=str_replace(‘******目录名/‘,‘‘,$d);

                   }  

                }

?-->


循环过程中因为我只想得到图片名称,所以我把前面的目录替换为空。


第三步:

列出所有的图片后就该把图片文件名插入数据库了。

写个循环就可以了啊。

首先,用SELECT。。。。。。。。查出系统会员,然后计算出系统会员的个数,

?

1

2

3

4

5

6

7

<!--?php

             //查出系统会员

            $member= DB::query(Database::SELECT,

            " SELECT * FROM 会员表名 WHERE 是否为系统会员 =1; ") 

            --->execute()

            ->as_array();

?>

 

然后再循环插入数据库:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

<!--?php

                for($i=0;$i<count($files);$i++){

                                $data = array(

                                    ‘图片字段‘ =--> $files[$i],

                                );

                                DB::update(‘会员表‘)

                                    ->set($data)

                                    ->where(‘系统会员ID‘, ‘=‘, $member[$i][‘系统会员ID‘])

                                    ->execute();

                             

 

                }

?>

 

OK。就这样就搞定了。

 

php批量上传图片并把图片名放入数据库,布布扣,bubuko.com

php批量上传图片并把图片名放入数据库

上一篇:[NOI2016] 循环之美


下一篇:解决mysql控制台查询数据乱码的问题,有图有真相