php批量上传图片并带参数,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。

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

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。。。。。。。。查出系统会员,然后计算出系统会员的个数,

//查出系统会员

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

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

->execute()

->as_array();

?>

然后再循环插入数据库:

for($i=0;$i

$data = array(

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

);

DB::update('会员表')

->set($data)

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

->execute();

}

?>

OK。就这样就搞定了。

下面再介绍一下函数glob的使用例子:

使用 Glob() 查找文件

很多PHP的函数都有一个比较长的自解释的函数名,但是,当你看到?glob() 的时候,你可能并不知道这个函数是用来干什么的,除非你对它已经很熟悉了。

你可以认为这个函数就好?scandir() 一样,其可以用来查找文件。

// 取得所有的后缀为PHP的文件

$files = glob('*.php');

print_r($files);

/* 输出:

Array

(

[0] => phptest.php

[1] => pi.php

[2] => post_output.php

[3] => test.php

)

*/

你还可以查找多种后缀名

// 取PHP文件和TXT文件

$files = glob('*.{php,txt}', GLOB_BRACE);

print_r($files);

/* 输出:

Array

(

[0] => phptest.php

[1] => pi.php

[2] => post_output.php

[3] => test.php

[4] => log.txt

[5] => test.txt

)

*/

你还可以加上路径:

$files = glob('../images/a*.jpg');

print_r($files);

/* 输出:

Array

(

[0] => ../images/apple.jpg

[1] => ../images/art.jpg

)

*/

如果你想得到绝对路径,你可以调用?realpath() 函数:

$files = glob('../images/a*.jpg');

// applies the function to each array element

$files = array_map('realpath',$files);

print_r($files);

/* output looks like:

Array

(

[0] => C:\wamp\www\images\apple.jpg

[1] => C:\wamp\www\images\art.jpg

)

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值