您的位置:首页 > 其它

文件上传

2015-06-22 21:42 239 查看
一. 上传表单

在 WeiBo/Home/View/User/index.html 里写入以下代码:

<!--上传单个文件的表单模式-->
<form action="__CONTROLLER__/upload" enctype="multipart/form-data" method="post">
<input type="file" name="photo" />
<input type="submit" value="提交"/>
</form>


在 WeiBo/Home/Controller/UserController.class.php 中的代码为:

<?php

namespace Home\Controller;
use Think\Controller;
use Think\Upload;

class UserController extends Controller {
public function index() {
$this->display();
}
public function upload() {
$upload=new Upload();  //实例化上传类
$upload->maxSize=3145728;  //设置上传大小,字节
$upload->exts=array('jpg','gif','png','jpeg');  //限定后缀
$upload->savePath='./';  //在根目录Uploads下
$info=$upload->upload();  //执行上传方法
if(!$info) {
$this->error($upload->getError());
}else {
$this->success('上传成功');
}
}
}


注:上传文件需引用 Think/Upload 此时在demo39下新建uploads文件,与WeiBo同级,否则会在上传时出现警告: 上传根目录不存在!请尝试手动创建:./Uploads/

二.文件上传

在上传操作之前,我们可以对上传的属性进行一些设置,Upload 类支持的属性:

参数描述
maxSize 文件上传的最大文件大小(以字节为单位),0为不限大小
rootPath文件上传保存的根路径
savePath 文件上传的保存路径(相对于根路径)
saveName 上传文件的保存规则,支持数组和字符串方式定义
saveExt 上传文件的保存后缀,不设置的话使用原文件后缀
replace 存在同名文件是否是覆盖,默认为 false
exts允许上传的文件后缀(留空为不限制),使用数组或者逗号分隔
的字符串设置,默认为空

mimes允许上传的文件类型(留空为不限制),使用数组或者逗号分隔
的字符串设置,默认为空

autoSub自动使用子目录保存上传文件 默认为 true
subName 子目录创建方式,采用数组或者字符串方式定义
hash 是否生成文件的 hash 编码 默认为 true
callback 检测文件是否存在回调,如果存在返回文件信息数组
//实例化配置参数
$config =  array(
'maxSize'=>3145728,
'exts'=> array('jpg','gif','png','jpeg'),
'savePath'=>'./',
);
$upload =  new Upload($config);


//动态配置参数
$upload =  new Upload();
$upload->maxSize = 3145728;
$upload->exts =  array('jpg','gif','png','jpeg');
$upload->savePath = './';


配置参数是可使用以上两种配置方法

一下是一些配置的具体参数:

//设置文件名
$upload->saveName = '123';


//限制上传文件类型
$upload->mimes =  array('image/jpeg');


//设置同名覆盖
$upload->replace =  true;


//不设置子目录
$upload->autoSub =  false;


//设置子目录格式
$upload->subName =  array('date','Ymd');


//不生成hash编码
$upload->hash =  false;


//子目录采用函数返回
$upload->subName = 'get_user_id';
//在 WeiBo/Common/Common/function.php 中创建一个函数
function get_user_id() {
return rand();
}


//获取上传文件信息
foreach ($info s as $file) {
echo $file['savepath'].$file['savename'];
}


$file 数组可以使用的属性

属性描述
key附件上传的表单名称
savepath上传文件的保存路径
name上传文件的原始名称
savename上传文件的保存名称
size上传文件的大小
type 上传文件的 MIME 类型
ext 上传文件的后缀类型
md5 上传文件的 md5哈希验证字符串 仅当 hash 设置开启后有效
sha1 上传文件的 sha1哈希验证字符串 仅当 hash 设置开启后有效
foreach ($info as $file) {
echo $file['key'].'<br />';
echo $file['savepath'].'<br />';
echo $file['name'].'<br />';
echo $file['savename'].'<br />';
echo $file['size'].'<br />';
echo $file['type'].'<br />';
echo $file['ext'].'<br />';
echo $file['md5'].'<br />';
echo $file['sha1'].'<br />';
}


可在判定上传文件成功后 $this->success('上传成功!'); 输出文件信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: