后端开发|php教程
图片,文件夹,thinkphp3.1,文档,上传
后端开发-php教程
thinkphp3.1 上传图片和文档,怎么分开保存?
炫酷导航源码,vscode软件教程,Ubuntu下mac,tomcat和tw,c 导入sqlite3,爬虫怎么获取菠菜数据的呢,php隐藏图片,吉林seo优化推广,织梦 移动网站,网页版千月源码,web首页导航模板lzw
回复讨论(解决方案)
在线答题系统源码解析,vscode写c语言方便,ubuntu 英语键盘,yum安装tomcat目录,爬虫神奇工具,php 交换数组元素位置,珠海全网营销seo推广机构,点击广告赚钱的网站源代码,bootstrap 贸易网站模板lzw
根据文件后缀,判断上传目录选择
订餐 微信 源码,ubuntu的终端显示,群辉tomcat7密码,宠物市场爬虫,php框架开发技术学习教程,桓台seo公司lzw
根据文件后缀,判断上传目录选择
$upload->savePath= ‘./Public/image/home/news/’;
if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
这个上传目录不是只能设置一个么,怎么设置两个,thinkphp上传类第一次用。
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[ ame];}
由于之后还会加上后缀,所以 $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[ ame];}
由于之后还会加上后缀,所以 $filename[‘name’] 怎么变形你可随意
import(‘.UploadFile’);
$upload = new UploadFile();// 实例化上传类
$upload->maxSize = 3145728;
$upload->savePath = ”;
$upload->saveRule = ‘myFunction’;
if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
private function getSaveName($filename) {
$rule = $this->saveRule;
if(empty($rule)) {//没有定义命名规则,则保持文件名不变
$saveName = $filename[‘name’];
}else {
if(function_exists($rule)) {
//使用函数生成一个唯一文件标识号
$saveName = $rule($filename).”.”.$filename[‘extension’];
}else {
//使用给定的文件名作为标识号
$saveName = $rule.”.”.$filename[‘extension’];
}
}
if($this->autoSub) {
// 使用子目录保存文件
$filename[‘savename’] = $saveName;
$saveName = $this->getSubName($filename).$saveName;
}
return $saveName;
}
function my_filename() {
return date(‘ymdHis’,time()).’_’.mt_rand();
}
function myFunction($filename) {
$p = in_array($filename[‘extension’], array(‘gif’, ‘jpg’, ‘png’)) ? ‘./Public/image/home/img/’ : ‘./Public/image/home/file/’;
return $p . $filename[my_filename()];
}
改了,这三个地方,提示上传路径不存在。
是空的,我在上传目录不存在上一句输出了下。
既然你的 ./Public/image/home/ 是公共的,那么就
$upload->savePath = ‘./Public/image/home/’;
函数里只留 ‘img/’ : ‘file/’
既然你的 ./Public/image/home/ 是公共的,那么就
$upload->savePath = ‘./Public/image/home/’;
函数里只留 ‘img/’ : ‘file/’
版主大大,路径可以用了,不过现在是名字是空的了。
文件已经存在!./Public/image/home/img/.jpg
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();
恩恩,谢谢版主大大了,第一次用框架,几个问题都是版主大大解决的。