thinkphp3.1 上传图片和文档,怎么分开保存?
根据文件后缀,判断上传目录选择
根据文件后缀,判断上传目录选择
thinkphp3.1 没有提供相应的方案,所以需要你自己设计
你可以继承 UploadFile 类,重写 save 方法
也可以用自己的上传类完成
如果你可以获取文件后缀$type
if ($type == '.jpg'){
$upload->savePath= './Public/image/home/ new1/';
if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
}else if ($type == '.txt'){
$upload->savePath= './Public/image/home /new2/';
if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
}
如果我上传的是一个图片一个文档 2 个个文件呢?
如果你可以获取文件后缀$type
if ($type == '.jpg'){
$upload->savePath= './Public/image/home/ new1/';
if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
}else if ($type == '.txt'){
$upload->savePath= './Public/image/home /new2/';
if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
}
如果同时上传多个文件,应该会有多个file文件域吧?
这就对file判断不就是?
如果你愿意修改 UploadFile.class.php 文件的话,事情还是有转机的
把 getSaveName 方法中的(408行附近)
$saveName = $rule().".".$filename['extension'];
改成
$saveName = $rule($filename).".".$filename['extension'];
然后
$upload->savePath = '';$upload->saveRule = 'myFunction';
function myFunction($filename) { $p = in_array($filename['extension'], array('gif', 'jpg', 'png')) ? '图片路径' : '文档路径'; return $p . $filename['name'];}
如果你愿意修改 UploadFile.class.php 文件的话,事情还是有转机的
把 getSaveName 方法中的(408行附近)
$saveName = $rule().".".$filename['extension'];
改成
$saveName = $rule($filename).".".$filename['extension'];
然后
$upload->savePath = '';$upload->saveRule = 'myFunction';
function myFunction($filename) { $p = in_array($filename['extension'], array('gif', 'jpg', 'png')) ? '图片路径' : '文档路径'; return $p . $filename['name'];}
是空的,我在上传目录不存在上一句输出了下。
既然你的 ./Public/image/home/ 是公共的,那么就
$upload->savePath = './Public/image/home/';
函数里只留 'img/' : 'file/'
既然你的 ./Public/image/home/ 是公共的,那么就
$upload->savePath = './Public/image/home/';
函数里只留 'img/' : 'file/'
return $p . $filename[my_filename()];
应为
return $p . my_filename();
可直接写作
return $p . date('ymdHis_').mt_rand();
return $p . $filename[my_filename()];
应为
return $p . my_filename();
可直接写作
return $p . date('ymdHis_').mt_rand();恩恩,谢谢版主大大了,第一次用框架,几个问题都是版主大大解决的。