Thinkphp3.2.2 文件上传与缩略图生成教程

需积分: 10 0 下载量 54 浏览量 更新于2024-09-09 收藏 28KB DOCX 举报
"Thinkphp3.2.2整合Uploadify进行文件上传并生成缩略图的实现方法" 在Thinkphp3.2.2框架中,文件上传功能进行了优化和更新,引入了更多的规则。Uploadify是一款流行的前端文件上传插件,它允许用户通过AJAX方式实现多文件上传。本资源主要介绍了如何在Thinkphp3.2.2环境下结合Uploadify实现文件上传,并且在上传过程中生成缩略图。 首先,我们需要创建一个图片上传处理类。以下是一个示例代码: ```php / * 图片上传处理 * @param [String] $path [保存文件夹名称] * @param [String] $thumbWidth [缩略图宽度] * @param [String] $thumbHeight [缩略图高度] * @return [Array] [图片上传信息] */ private function upload($path, $thumbWidth = '', $thumbHeight = '') { $obj = new \Think\Upload(); // 实例化上传类 $obj->maxSize = C('UPLOAD_MAX_SIZE'); // 设置附件上传大小 $obj->savePath = C('UPLOAD_PATH') . $path . '/'; // 设置附件上传目录 $obj->exts = C('UPLOAD_EXTS'); // 设置附件上传类型 $obj->saveName = array('uniqid', ''); // 文件名规则 $obj->replace = true; // 存在同名文件覆盖 $obj->autoSub = true; // 使用子目录保存 $obj->subName = array('date', 'Ym'); // 子目录创建规则 $info = $obj->upload(); if (!$info) { return array('status' => 0, 'msg' => $obj->getError()); } else { if ($info) { // 生成缩略图 $image = new \Think\Image(); foreach ($info as $file) { $thumb_file = C('UPLOAD_PATH') . $file['savepath'] . $file['savename']; $save_path = C('UPLOAD_PATH') . $file['savepath'] . 'mini_' . $file['savename']; $image->open($thumb_file)->thumb($thumbWidth, $thumbHeight)->save($save_path); } return array('status' => 1, 'msg' => '上传成功', 'data' => $info); } } } ``` 在这个类中,我们首先实例化了Thinkphp的Upload类,设置了上传大小、路径、允许的文件扩展名等参数。然后,我们调用upload()方法尝试上传文件。如果上传失败,会返回错误信息;如果上传成功,我们将遍历上传的每个文件,利用Thinkphp的Image类生成缩略图。 在生成缩略图的过程中,`$thumb_file`是原始图片的完整路径,`$save_path`是缩略图的保存路径。使用`$image->open()`打开图片,然后调用`$image->thumb()`方法生成指定宽度和高度的缩略图,最后通过`$image->save()`保存缩略图。 在前端,你需要配置Uploadify插件,设置上传的URL为调用上述upload方法的控制器动作,并根据需要配置其他参数如文件类型、最大上传大小等。这样,当用户选择文件后,Uploadify会通过AJAX将文件发送到服务器,服务器处理完上传并生成缩略图后,将结果返回给前端。 这个资源提供了在Thinkphp3.2.2框架下,使用Uploadify插件进行文件上传并自动生成缩略图的实现方式。通过这种方式,可以方便地在项目中实现高效、稳定的文件上传功能,同时满足图片展示时对缩略图的需求。