thinkphp框架中的(大)文件上传

最近在学习PHP,首次用其实现文件上传,特此记录,以供初学者参考。


1、先在Lib/Action目录下新建 UpLoadAction.class.php,内容如下:

<?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,内容如下:

<form action="upload" method="post" enctype="multipart/form-data">
<input type="file"  name="photo1"/>
<input type="submit" value="提交"/>
</form>
此处主要注意  enctype="multipart/form-data"  这一句,如果不正确或者未添加,会提示你没有选择文件。如果是直接从官方文档中拷贝下来的话,一定要注意双引号是否正确,我当时就是直接拷贝过来后由于是汉语双引号,相当于没有添加,导致一直提示没有选择文件。


完成了这两步,在浏览器中输入你的跟路径再加UpLoad/index就可以访问到上传页面了。


当然,以上这些只能上传很小的文件,要实现大文件的上传,还需要修改一些配置:

1、首先修改Php.ini

max_execution_time = 30 ,这个是每个脚本运行的最长时间,单位秒,我修改为:max_execution_time = 1800(时间自己定)
max_input_time = 60,这是每个脚本可以消耗的时间,单位也是秒,我修改为:max_input_time = 300
memory_limit = 128M,这个是脚本运行最大消耗的内存,根据你的需求更改数值,这里我修改为:memory_limit = 256M
post_max_size = 8M,表单提交最大数据为 8M,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的。限制范围包括表单提交的所有内容.例如:发表贴子时,贴子标题,内容,附件等…这里我修改为:post_max_size = 200M
upload_max_filesize = 2M ,上载文件的最大许可大小 ,这里我修改为:upload_max_filesize = 100M
2、 修改Apahce目录下的httpd.conf
添加:LimitRequestBody 104857600
即100M=100*1024*1024 (当然这个数字可以自己定)
3、 重新启动apache

好了,现在再选择100M以内的大文件也是可以上传的。







  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值