请问你有Thinkphp下使用Bootstrap File Input多文件上传的案例吗

请问你有Thinkphp下使用Bootstrap File Input多文件上传的案例吗,第1张

现在我们开始使用插件

(1)首先引入文件

<!--css文件-->

<link href="__PUBLIC__/css/fileinput.css" media="all" rel="stylesheet" type="text/css" />

<link href="__PUBLIC__/css/bootstrap.min.css?v=3.3.6" rel="stylesheet">

<!--js文件-->

<script src="__PUBLIC__/js/jQuery.min.js" type="text/JavaScript"></script>

<script src="__PUBLIC__/js/bootstrap.min.js?v=3.3.6"></script>

<script src="__PUBLIC__/js/plugins/fileinput.js" type="text/javascript"></script>

<script src="__PUBLIC__/js/fileinput.min.js" type="text/javascript"></script>

(2)初始化控件

<input id="file" name="file_data[]" type="file" multiple data-preview-file-type="any" data-show-caption="true">

data-preview-file-type="any" :设置之后可以上传多个文件

name="file_data[]" :因为要上传多个文件所以要用数组

(3)js初始化控件

$("#file").fileinput({

uploadUrl: "{:U('Admin/Img/imgupload2')}",// 上传路径

uploadAsync: false,//是否异步传输

maxFileCount: 5//最大文件上传数量

}).on('filebatchpreupload', function(event, data, id, index) {

}).on('filebatchuploadsuccess', function(event, data) {//上传成功从服务器端返回的数据(即保存的文件名称)

for(var i=0i<data.response.lengthi++){

alert(data.response[i].flag)

}

})

(4)thinkphp对应的方法

public function imgupload2(){

$upload = new \Think\Upload()// 实例化上传类

$upload->maxSize = 3145728 // 设置附件上传大小

$upload->exts = array('jpg', 'gif', 'png', 'jpeg')// 设置附件上传类型

$upload->rootPath = './Public/Uploads/'// 设置附件上传根目录

$upload->savePath = ''// 设置附件上传(子)目录

$info = $upload->upload(array($_FILES['file_data']))// 上传文件

$i=0

if(!$info) {// 上传错误提示错误信息

$a[$i]['flag']="no"

$this->ajaxReturn($a,'JSON')

}else{// 上传成功 获取上传文件信息

foreach($info as $file){

$a[$i]['flag']=$file['savepath'].$file['savename']

$i++

}

}

$this->ajaxReturn($a,'JSON')

}

ThinkPHP5.0内置了一个文件处理类 \think\File,内置的文件上传 *** 作也是调用了该类进行处理的。

File类继承了PHP的SplFileObject类,因此可以调用SplFileObject类所有的属性和方法。

表单代码:

<form action="/index/index/upload" enctype="multipart/form-data" method="post">

<input type="file" name="image" /> <br> 

<input type="submit" value="上传" /> 

</form>

控制器代码:

public function upload(){

    // 获取表单上传文件 例如上传了001.jpg

    $file = request()->file('image')

    // 移动到框架应用根目录/public/uploads/ 目录下

    $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads')

    if($info){

        // 成功上传后 获取上传信息

        // 输出 jpg

        echo $info->getExtension()

        // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg

        echo $info->getSaveName()

        // 输出 42a79759f284b767dfcb2a0197904287.jpg

        echo $info->getFilename() 

    }else{

        // 上传失败获取错误信息

        echo $file->getError()

    }

}

move方法成功的话返回的是一个SplFileInfo对象,你可以对上传后的文件进行后续 *** 作,比如改名。

//定义函数判断是否有上传的图片

private function haveimg($data){

foreach ($data['error'] as $value) {

# code...

if($value==0){

return TRUE

}

else{

return FALSE

}

}

}

/***********判断当前是否有图片*****************/

if($this->haveimg($_FILES['imgs'])){

//上传图片

$upload = new \Think\Upload()// 实例化上传类

$upload->maxSize = 3145728 // 设置附件上传大小

$upload->exts = array('jpg', 'gif', 'png', 'jpeg')// 设置附件上传类型

$upload->rootPath = './Uploads/'// 设置附件上传根目录

$upload->savePath = 'Pricture/'// 设置附件上传(子)目录

// 上传文件

$info=$upload->upload(array('picurl' =>$_FILES['imgs']))

if($info){

$pmodel=M('goods_pics')

foreach ($info as $k=>$v) {

$url=$v['savepath'].$v['savename']

$pmodel->add(array(

'picurl'=>$url,

'gid'=>$data['gid']

))

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8113109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存