1. 前提条件
在开始之前,请确保以下条件已经满足:
- 环境配置成功。
- 成功运行ThinkPHP框架。
2. 上传表单设置
为了上传文件,您需要在HTML表单中添加enctype="multipart/form-data"属性。这是必需的,因为它允许表单数据以二进制形式发送,这对于文件上传是必要的。
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
3. PHP上传处理
function uploadOne($imgName, $dirName, $thumbSize) {
// 检查是否有文件上传
if (isset($_FILES[$imgName]) && $_FILES[$imgName]['error'] == 0) {
// 设置根目录
$rootPath = C('IMGrootPath');
// 实例化上传类
$upload = new ThinkUpload(array(
'rootPath' => $rootPath,
));
// 设置附件上传大小
$upload->maxSize = (int)C('IMGmaxSize') * 1024 * 1024;
// 设置允许上传的文件后缀
$upload->exts = C('IMGexts');
// 上传文件
$info = $upload->upload($_FILES[$imgName]);
// 返回结果
if ($info) {
$ret[] = $upload->getSaveName(); // 图片路径
$ret[] = 'ok';
} else {
$ret[] = 'error';
$ret[] = $upload->getError();
}
} else {
$ret[] = 'error';
$ret[] = 'No file uploaded';
}
return $ret;
}
4. 常见问题
以下是一些常见的上传问题及其解决方案:
4.1 文件上传失败
原因:文件大小超过。
解决方案:在PHP配置文件中,设置upload_max_filesize和post_max_size为更大的值。
ini_set('upload_max_filesize', '50M');
ini_set('post_max_size', '50M');
4.2 文件类型不允许
原因:文件扩展名不在允许列表中。
解决方案:在ThinkUpload类中设置允许的文件扩展名。
$upload->exts = array('jpg', 'png', 'gif', 'mp4');
4.3 缩略图生成失败
$upload->exts = array('jpg', 'png', 'gif');