作者:一个简单的程序员 | 来源:互联网 | 2023-05-17 19:41
最近在学习PHP,首次用其实现文件上传,特此记录,以供初学者参考。1、先在LibAction目录下新建UpLoadAction.class.php,内容如下:<?phpclassUpLoa
最近在学习PHP,首次用其实现文件上传,特此记录,以供初学者参考。
1、先在Lib/Action目录下新建 UpLoadAction.class.php,内容如下:
class UpLoadAction extends Action {
public function index()
{
$this->display();
}
Public function upload(){
import('ORG.Net.UploadFile');
$upload = new UploadFile();// 实例化上传类
$upload->maxSize = 3145728000 ;// 设置附件上传大小
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg', 'VOB', 'avi');// 设置附件上传类型
$upload->savePath = './Public/Uploads/';// 设置附件上传目录
if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
print_r($info);
// 保存表单数据 包括附件数据
//$User = M("User"); // 实例化User对象
//$User->create(); // 创建数据对象
//$User->photo = $info[0]['savename']; // 保存上传的照片根据需要自行组装
//$User->add(); // 写入用户数据到数据库
//$this->success('数据保存成功!');
}
}
?>
这里没有什么特别,直接复制thinkphp官方文档中的代码即可,我注释掉了数据库部分。
2、在Tpl目录中新建UpLoad文件夹,在其中新建index.html,内容如下:
此处主要注意 enctype="multipart/form-data" 这一句,如果不正确或者未添加,会提示你没有选择文件。如果是直接从官方文档中拷贝下来的话,一定要注意双引号是否正确,我当时就是直接拷贝过来后由于是汉语双引号,相当于没有添加,导致一直提示没有选择文件。
完成了这两步,在浏览器中输入你的跟路径再加UpLoad/index就可以访问到上传页面了。
当然,以上这些只能上传很小的文件,要实现大文件的上传,还需要修改一些配置:
1、首先修改Php.ini
max_execution_time = 30 ,这个是每个脚本运行的最长时间,单位秒,我修改为:max_execution_time = 1800(时间自己定)
max_input_time = 60,这是每个脚本可以消耗的时间,单位也是秒,我修改为:max_input_time = 300memory_limit = 128M,这个是脚本运行最大消耗的内存,根据你的需求更改数值,这里我修改为:memory_limit = 256Mpost_max_size = 8M,表单提交最大数据为 8M,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的。限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等…这里我修改为:post_max_size = 200Mupload_max_filesize = 2M ,上载文件的最大许可大小 ,这里我修改为:upload_max_filesize = 100M2、修改Apahce目录下的httpd.conf添加:LimitRequestBody 104857600即100M=100*1024*1024 (当然这个数字可以自己定)3、重新启动apache
好了,现在再选择100M以内的大文件也是可以上传的。