Thinkphp实现单图与多图上传功能详解

3 下载量 95 浏览量 更新于2024-10-20 收藏 2.78MB RAR 举报
资源摘要信息:"ThinkphpUploadPic单图片上传与多图片上传技术文档" 知识点概述: 本技术文档主要介绍如何在ThinkPHP框架下实现单图片上传与多图片上传功能。ThinkPHP是一个快速、简单的PHP开发框架,它遵循MVC模式设计,旨在简化Web应用开发流程。在本案例中,我们会使用一个名为uploadify的插件来辅助完成图片上传功能,同时对上传过程中的前端与后端代码进行详细说明。 一、单图片上传功能: 1. 插件引入: 首先需要将uploadify插件的相关文件放置于/Public/plugins/uploadify目录下,确保后端能够访问到这些资源。 2. 前端实现: 前端页面的实现主要涉及到HTML和JavaScript代码。具体步骤如下: - 在HTML页面中引入uploadify插件的JavaScript和CSS文件。 - 使用HTML标签来创建一个文件上传控件,并为其指定一个ID,例如“picUpload”。 - 通过JavaScript调用uploadify方法对控件进行初始化,配置相应的参数,如上传地址、文件类型等。 示例代码片段(onePic.html)可能如下: ```html <html> <head> <link rel="stylesheet" type="text/css" href="/Public/plugins/uploadify/uploadify.css"> <script type="text/javascript" src="/Public/plugins/uploadify/swfobject.js"></script> <script type="text/javascript" src="/Public/plugins/uploadify/jquery.uploadify.js"></script> </head> <body> <!-- 上传控件 --> <input type="file" id="picUpload" name="file"> <script type="text/javascript"> $(function() { $("#picUpload").uploadify({ 'uploadScript': '/index.php/Home/Index/uploadPic', // 上传文件的处理地址 'cancelImg': '/Public/plugins/uploadify/cancel.png', 'buttonText': '选择文件', 'height': 22, 'width': 100, 'multi': false, // 设置为单文件上传 'auto': false, 'onComplete': function(file, data, response) { // 文件上传成功后的回调函数 alert('上传成功:' + response); } }); }); </script> </body> </html> ``` 3. 后端实现: 后端部分主要是PHP代码,负责接收上传的图片并进行处理。 - 在ThinkPHP的Action方法中编写uploadPic方法,用于接收上传的文件。 - 对文件进行必要的校验,如文件大小、类型等。 - 使用move_uploaded_file函数将文件移动到目标目录。 - 返回上传结果的json信息。 示例代码片段(uploadPic方法)可能如下: ```php public function uploadPic() { $targetPath = "/uploads/"; // 设置文件上传目录 if (!is_dir($targetPath)) { @mkdir($targetPath, 0777, true); } if (!file_exists($targetPath)) { exit("Failed to upload. Directory does not exist."); } $tempFile = $_FILES["file"]["tmp_name"]; $targetFile = $targetPath . basename($_FILES["file"]["name"]); $type = $_FILES["file"]["type"]; // 检查文件类型 if ($type == "image/jpeg" || $type == "image/png") { if (move_uploaded_file($tempFile, $targetFile)) { echo json_encode(array('error' => 0, 'url' => $targetFile)); } else { echo json_encode(array('error' => 1, 'msg' => "上传失败")); } } else { echo json_encode(array('error' => 2, 'msg' => "文件类型不匹配")); } } ``` 二、多图片上传功能: 多图片上传与单图片上传类似,主要的区别在于JavaScript初始化uploadify插件时的配置项。 1. 在初始化uploadify方法中将'multi'参数设置为true,允许多文件上传。 2. 其他配置项基本一致,例如指定上传地址、文件类型校验、上传成功后的回调等。 示例代码片段(onePic.html中上传控件对应的JavaScript代码)可能如下: ```javascript $("#picUpload").uploadify({ 'uploadScript': '/index.php/Home/Index/uploadPic', // 上传文件的处理地址 'cancelImg': '/Public/plugins/uploadify/cancel.png', 'buttonText': '选择文件', 'height': 22, 'width': 100, 'multi': true, // 设置为多文件上传 'auto': false, 'onComplete': function(file, data, response) { // 文件上传成功后的回调函数 alert('上传成功:' + response); } }); ``` 以上代码展示了在ThinkPHP框架中实现单图片上传与多图片上传的核心技术点,包括了前端页面的搭建、JavaScript插件的使用、后端PHP代码的处理逻辑。通过这些代码片段的详细说明,开发者可以更好地理解整个图片上传流程,并将其应用于实际项目开发中。