1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > thinkphp3.1 多文件上传图片和文档 怎么保存在不同的文件夹?

thinkphp3.1 多文件上传图片和文档 怎么保存在不同的文件夹?

时间:2022-08-24 13:54:11

相关推荐

thinkphp3.1 多文件上传图片和文档 怎么保存在不同的文件夹?

后端开发|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();

恩恩,谢谢版主大大了,第一次用框架,几个问题都是版主大大解决的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。