首页 > 编程知识 正文

php批量upload,PHP批量逐条执行update

时间:2023-12-27 22:26:03 阅读:323501 作者:SDDB

本文目录一览:

Thinkphp怎么批量添加数据

?php

class FileAction extends Action {

public function Index()

{

//print_r(__URL__);

$file = M('file');

$list = $file-select();

$this-assign('filelist',$list);

$this-display();

}

public function upload()

{

//文件上传的地址上传给它,并且上传完成后返回一个信息,让其写入数据库

//如果$_FILES为空的画,我就让action给出一个错误提示,告诉用户必须选择上传文件。如果有上传文件,则调用up方法

//$_FILES = $this-_post('file');

//print_r($_FILES);

if (empty($_FILES)) {

$this-error('必须选择上传文件');

}else {

$a = $this-Up();

//print_r($a);

if (isset($a)) {

//写入数据库方法

if($this-c($a)) {

$this-success('上传成功');

}else {

$this-error('写入数据库失败');

}

}else {

$this-error('上传文件有异常请与系统管理员联系');

}

}

}

private function c($data)

{

//print_r($data);

$file=M('file');

$num = '0';

for($i = 0; $i count($data)-1; $i++) {

$data['filename']=$data[$i]['savename'];

if( $file-data($data)-add())

{

$num++;

}

}

if($num==count($data)-1)

{

return true;

}else {

return false;

}

}

// private function c($data)

// {

// $file = M('file');

// $data['filename'] = $data[0]['savename'];

// if ($file-data($data)-add()) {

// return true;

// }else {

// return false;

// }

// }

//在这个方法当中,完成与thinkphp相关的,文件上传类的调用

private function Up()

{

//echo '模拟上传';

//基本上传功能

//批量上传功能

//生成图片缩略图

//自定义参数上传

//上传检测(大小,后缀,mime类型)

//支持覆盖方式上传

//上传类型,附件大小,上传路径定义

//支持hash或者日期子目录保存上传文件

//上传图片的安全性检测

//对上传文件的hash检测

//上传文件名自定义规范

import('@.ORG.UploadFile');

import('@.ORG.Image');

$upload = new UploadFile();

$upload-maxSize = '1000000'; //指上传文件大小,默认为-1,不限制大小(bytes)

$upload-savePath = './Public/'; //上传保存到什么地方?路径建议保存到入口文件平级或平级目录的子目录

$upload-saveRule = 'uniqid'; //上传文件的文件名保存规则 time uniqid(默认) com_create_guid

$upload-hashType = 'md5_file';

$upload-autoCheck = true; //是否自动检测附件 默认true

$upload-uploadReplace = true; //如果存在同名文件是否进行覆盖

$upload-allowExts = array('jpg','jpeg','png','gif'); //允许上传的文件后缀

$upload-allowPath = array('image/png','image/jpg','image/pjpeg','image/gif','image/jpeg'); //检测mime类型

$upload-thumb = true; // 是否开启图片文件缩略

$upload-thumbMaxWidth = '300,500';//缩略图最大宽度

$upload-thumbMaxHeight = '200,400';//最大高度

$upload-thumbPrefix = 's-,m-';//缩略图文件前缀

//$upload-thumbSuffix = '_s,_m';//文件后缀

//$upload-thumbPath = '';//如果留空直接上传至

//$upload-thumbFile 在数据库中也存一个文件名即可

$upload-thumbRemoveOrigin = 1; //如果生成缩略图,是否删除原图

//$upload-autoSub 是否使用子目录进行保存上传文件

//$upload-subType='' 子目录创建方式默认为hash 也可以为date

//$upload-dateFormat 子目录方式date的指定日期格式

//$upload-hashLevle

//upload() 如果上传成功返回true,失败返回false

if ($upload-upload()) {

$info = $upload-getUploadFileInfo();

return $info;

}else {

//是专门来获取上传的错误信息的

$this-error($upload-getErrorMsg());

}

}

}

?

php怎么实现批量上传图片?不是一张一张选择之后一起上传 就是打开文件夹全选直接全部上传。

获取路径下的所有图片文件名,写入数据库或是某个变量,在别的页面调用程序上传,再从别的页面读出来就行了。

以下是示例代码:

?php

function upload($fileName,$filePath)

{

//判断该文件是否是用户根据POST方式提交到服务器的上传文件

foreach($_FILES[$fileName]['tmp_name'] as $k=$v)

{

if($_FILES[$fileName]['name'][$k]!="")

{

$result=check($_FILES[$fileName]['size'][$k],$_FILES[$fileName]['type'][$k],$_FILES[$fileName]['name'][$k]);

if($result['error']==1)

{

echo $result['msg']."br";

echo "出错文件:".$result['name']."br";

}

else

{

$arrTT=explode(".",$_FILES[$fileName]['name'][$k]);

$extName=$arrTT[count($arrTT)-1];

$NewName=sha1(microtime()).".".$extName;

if(move_uploaded_file($v,$filePath.$NewName));

$arrWW[]=$NewName;

}

}

}

return $arrWW;

}

function check($size,$types,$name)

{

if($size=5242880)

{

$result['msg']='文件过大!';

$result['error']=1;

$result['name']=$name;

}

$arrType=array('image/pjpeg','image/gif','image/x-png','audio/mp3','application/msword','application/vnd.ms_excel','application/octet-stream','application/vnd.ms-powerpoint');

if(!in_array($types,$arrType))

{

$result['msg']='文件类型不匹配!';

$result['error']=1;

$result['name']=$name;

}

return $result;

}

?

php如何实现一次性上传多个文件

?php

$max_files=5; //最多上传文件的个数,与 up.htm 中的 input file 控件的个数相同

$up_ok_files=0; //成功上传的文件个数

$up_folder="ups"; //保存上传文件的目标文件夹

if(isset($_FILES['myfile'])){

//由于 $_FILES['myfile'] 是个数组,所以需要使用循环遍历

for($i=0;$i$max_files;$i++){

//如果未出错

if($_FILES['myfile']['error'][$i]==0){

if(move_uploaded_file($_FILES['myfile']['tmp_name'][$i],$up_folder."/".$_FILES['myfile']['name'][$i])){

//成功上传后,计数器增 1

$up_ok_files +=1;

}

else{

echo "h4 style='color:red;'在服务器中保存失败/h4";

}

}

}

echo "h4成功上传 ".$up_ok_files. " 个文件/h4";

}

?

如果对 $_FILES['myfile'] 这个数组的结构不清楚,那么可以在循环之前加入这句代码将其显示出来:

print_r($_FILES['myfile']);

对这个数组的结构了解之后,理解上述代码就比较容易了。

foreach循环实现

常规下,php上传一张图片,页面上添加一个文件域,上传后,得到的数组是二维数组

转变一下,

页面上添加多个文件域,并且他们的name属性相同,而且是以数组形式提交(比如:name="file[]")

那么上传后,得到的是三维数组

而,php中,foreach循环对遍历数组那真是完美至极

用foreach遍历一次这个三维数组,得到的结果就又是二维数组,那么,就和上传一张图片一样一样的了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。