<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文件上传类的使用帮助处理即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)