本文实例讲述了Thinkphp多文件上传实现方法,分享给大家供大家参考。具体实现方法如下: Thinkphp手册中对于多文件上传描述的很清楚:如果需要使用多个文件,只需要修改表单,把 复制代码 代码如下:<input type=’file’ name=’photo’> 改为 复制代码 代码如下:<li><input type=’file’ name=’photo1′></li> <li><input type=’file’ name=’photo2′></li> <li><input type=’file’ name=’photo3′></li> 或者 复制代码 代码如下:<li><input 在PHP的Web开发框架ThinkPHP中,实现多文件上传是一个常见的需求。本篇文章将详细讲解如何在ThinkPHP中实现这一功能,并提供一个实例来帮助理解整个过程。 要实现多文件上传,需要在HTML表单中添加多个`<input type="file">`元素。这些元素的`name`属性可以设置为同一个名称并加上方括号,如`name="photo[]"`,这样在提交表单时,PHP会将这些文件视为一个数组。例如: ```html <li><input type="file" name="photo[]"></li> <li><input type="file" name="photo[]"></li> <li><input type="file" name="photo[]"></li> ``` 或者,你可以为每个文件输入框指定不同的名称,如`name="photo1"`, `name="photo2"` 和 `name="photo3"`。 接下来,我们需要在ThinkPHP的Model层处理文件上传。这里假设我们有两个字段,分别用于上传图片和视频,字段名为`image`和`video`。HTML代码如下: ```html 图片:<input type="file" name="image[]"> 视频:<input type="file" name="video[]"> ``` 在Model层,我们将定义两个自动完成方法,分别处理图片和视频的上传。导入`ORG.Net.UploadFile`类,这是ThinkPHP内置的文件上传类。然后创建`UploadFile`对象,设置允许上传的文件类型、保存规则、存储路径等。例如: ```php protected $info = ""; protected $_auto = array( array('image', 'upload', 3, 'callback'), // 自动完成方法 array('video', 'videoupload', 3, 'callback'), // 自动完成方法 ); // 图片上传 protected function upload() { $var = $_FILES['image']['name']; import('ORG.Net.UploadFile'); $upload = new UploadFile(); $upload->saveRule = time; $upload->allowExts = array('jpg', 'gif', 'png', 'zip', 'flv'); $upload->thumb = true; // 开启图片缩略图生成 // 视频路径... $upload->videopath = './Public/upload/Video/'; $upload->savePath = './Public/upload/images/'; $upload->thumbPrefix = '250_115_,150_110_,213_156_'; $upload->thumbMaxWidth = '250,150,213'; $upload->thumbMaxHeight = '115,110,156'; if (!in_array("", $var) && !in_array("", $_FILES['video']['name'])) { if (!$upload->upload()) { echo $upload->getErrorMsg(); die; } else { $this->info = $upload->getUploadFileInfo(); // 根据上传的文件情况返回结果 if (!in_array("", $var) && !in_array("", $_FILES['video']['name'])) { return $this->info[1]['savename']; } elseif (!in_array("", $var)) { return $this->info[0]['savename']; } else { return false; } } } else { return false; } } // 视频上传 protected function videoupload() { if (!in_array("", $var) && !in_array("", $_FILES['video']['name'])) { return $this->info[0]['savename']; } elseif (!in_array("", $_FILES['video']['name'])) { return $this->info[1]['savename']; } else { return false; } } ``` 在`upload()`方法中,我们首先检查是否有图片和视频文件被上传,然后调用`upload()`方法进行上传。`getUploadFileInfo()`用于获取上传文件的信息,如文件名、保存路径等。根据上传的文件数量,返回相应的文件信息。 在`videoupload()`方法中,我们处理视频文件的上传,逻辑与图片上传类似,但不需要生成缩略图。 多文件上传的原理在于,当浏览器提交包含`<input type="file" name="foo[]" />`的表单时,服务器端的`$_FILES['foo']`将是一个数组,包含了所有上传的文件信息。通过遍历这个数组,我们可以逐个处理上传的文件。 总结起来,实现ThinkPHP中的多文件上传,关键在于正确设置HTML表单以及在Model层编写处理文件上传的自动完成方法。确保正确处理可能出现的错误,如文件未选择、文件类型不匹配、上传失败等,以保证文件上传的稳定性和安全性。同时,根据实际需求,可以添加更多的文件验证和处理逻辑,如大小限制、文件类型检查、缩略图生成等。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 4
- 资源: 971
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)