thinkphp怎么实现上传多个文件到不同的目录

thinkphp怎么实现上传多个文件到不同的目录,第1张

<tr>

<td><input type='file' name='video[]' /></td>

<td><input type='file' name='video[]' /></td>

<td><input type='file' name='video[]' /></td>

</tr>

<tr>

<td><input type='file' name='pic[]' /></td>

<td><input type='file' name='pic[]' /></td>

<td><input type='file' name='pic[]' /></td>

</tr>

这种不同name的多文件上传,怎么改UploadFile.class.php类,来实现多name多文件上传

index.html

<form method="POST" enctype="multipart/form-data" action="{:U('Index/upload')}">

<tr >

<td>flv文件</td>

<td><input type="file" name="flv" /></td>

</tr>

<tr >

<td>视频压缩文件</td>

<td><input type="file" name="movie" /></td>

</tr>

<tr>

<td>缩略图</td>

<td><input type="file" name="img" /></td>

</tr>

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

</form>

复制代码

UploadFile.class.php 162行

if (!is_dir($savePath)) {

// 检查目录是否编码后的

if (is_dir(base64_decode($savePath))) {

$savePath = base64_decode($savePath)

} else {

// 尝试创建目录

if (!mkdir($savePath)) {

$this->error = '上传目录' . $savePath . '不存在'

return false

}

}

} else {

if (!is_writeable($savePath)) {

$this->error = '上传目录' . $savePath . '不可写'

return false

}

}

复制代码

改成

if(!is_array($savePath)){

if (!is_dir($savePath)) {

// 检查目录是否编码后的

if (is_dir(base64_decode($savePath))) {

$savePath = base64_decode($savePath)

} else {

// 尝试创建目录

if (!mkdir($savePath)) {

$this->error = '上传目录' . $savePath . '不存在'

return false

}

}

} else {

if (!is_writeable($savePath)) {

$this->error = '上传目录' . $savePath . '不可写'

return false

}

}

}

复制代码

UploadFile.class.php 194行

$file['savepath'] = $savePath

复制代码

改成

$file['savepath'] = is_array($savePath)?$savePath[$key]:$savePath

复制代码

Public function upload() {

import('Org.Net.UploadFile')

$upload = new \Org\Net\UploadFile()// 实例化上传类

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

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

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

$upload->savePath = array('flv'=>'./Public/Uploads/flv/','movie'=>'./Public/Uploads/movie/','img'=>'./Public/Uploads/img/')

if (!$upload->upload()) {

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

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

$info = $upload->getUploadFileInfo()

}

}

复制代码

$upload->savePath 改为数组

./Public/Uploads/flv/

./Public/Uploads/movie/

./Public/Uploads/img/

这3个目录要手动创建 这样在就变成不影响原来程序的

情况下实现上传多个文件到不同的目录了

现在我们开始使用插件

(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')

}

<input type='file'  name='photo[]' multiple>

上面的文件上传标签可以选择多文件,然后参考thinkphp文件上传类的使用帮助处理即可


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存