当前位置:K88软件开发文章中心网站服务器框架ThinkPHP → 文章内容

文件上传

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-26 15:35:18

tError()); }else{// 上传成功 获取上传文件信息 echo $info['savepath'].$info['savename']; }}uploadOne方法上传成功后返回的文件信息和upload方法的区别是只有单个文件信息的一维数组。上传文件的命名规则上传文件的命名规则(saveName)用于确保文件不会产生冲突或者覆盖的情况。命名规则的定义可以根据你的业务逻辑来调整,不是固定的。例如,如果你采用时间戳的方式来定义命名规范,那么在同时上传多个文件的时候可能产生冲突(因为同一秒内可以上传多个文件),因此你需要根据你的业务需求来设置合适的上传命名规则。这里顺便来说下saveName参数的具体用法。采用函数方式如果传入的字符串是一个函数名,那么表示采用函数动态生成上传文件名(不包括文件后缀),例如:// 采用时间戳命名$upload->saveName = 'time';// 采用GUID序列命名$upload->saveName = 'com_create_guid'; 也可以采用用户自定义函数// 采用自定义函数命名$upload->saveName = 'myfun'; 默认的命名规则设置是采用uniqid函数生成一个唯一的字符串序列。saveName的值支持数组和字符串两种方式,如果是只有一个参数或者没有参数的函数,直接使用字符串设置即可,如果需要传入额外的参数,可以使用数组方式,例如:// 采用date函数生成命名规则 传入Y-m-d参数$upload->saveName = array('date','Y-m-d'); // 如果有多个参数需要传入的话 可以使用数组$upload->saveName = array('myFun',array('__FILE__','val1','val2'));如果需要使用上传的原始文件名,可以采用FILE传入,所以上面的定义规则,最终的结果是 myFun('上传文件名','val1','val2')执行的结果。直接设置上传文件名如果传入的参数不是一个函数名,那么就会直接当做是上传文件名,例如:$upload->saveName = time().'_'.mt_rand();表示上传的文件命名采用时间戳加一个随机数的组合字符串方式。当然,如果觉得有必要,你还可以固定设置一个上传文件的命名规则,用于固定保存某个上传文件。$upload->saveName = 'ThinkPHP';保持上传文件名不变如果你想保持上传的文件名不变,那么只需要设置命名规范为空即可,例如:$upload->saveName = '';一般来说不建议保持不变,因为会导致相同的文件名上传后被覆盖的情况。子目录保存saveName只是用于设置文件的保存规则,不涉及到目录,如果希望对上传的文件分子目录保存,可以设置autoSub和subName参数来完成,例如:// 开启子目录保存 并以日期(格式为Ymd)为子目录$upload->autoSub = true;$upload->subName = array('date','Ymd');可以使用自定义函数来保存,例如:// 开启子目录保存 并调用自定义函数get_user_id生成子目录$upload->autoSub = true;$upload->subName = 'get_user_id';和saveName参数一样,subName的定义可以采用数组和字符串的方式。注意:如果get_user_id函数未定义的话,会直接以get_user_id字符串作为子目录的名称保存。子目录保存和文件命名规则可以结合使用。上传驱动上传类可以支持不同的环境,通过相应的上传驱动来解决,默认情况下使用本地(Local)上传驱动,当然,你还可以设置当前默认的上传驱动类型,例如:'FILE_UPLOAD_TYPE' => 'Ftp','UPLOAD_TYPE_CONFIG' => array( 'host' => '192.168.1.200', //服务器 'port' => 21, //端口 'timeout' => 90, //超时时间 'username' => 'ftp_user', //用户名 'password' => 'ftp_pwd', //密码 ),表示当前使用Ftp作为上传类的驱动,上传的文件会通过FTP传到指定的远程服务器。也可以在实例化上传类的时候指定,例如:$config = array( 'maxSize' = 3145728, 'rootPath' = './Uploads/', 'savePath' = '', 'saveName' = array('uniqid',''), 'exts' = array('jpg', 'gif', 'png', 'jpeg'), 'autoSub' = true, 'subName' = array('date','Ymd'),);$ftpConfig = array( 'host' => '192.168.1.200', //服务器 'port' => 21, //端口 'timeout' => 90, //超时时间 'username' => 'ftp_user', //用户名 'password' => 'ftp_pwd', //密码 );$upload = new \Think\Upload($config,'Ftp',$ftpConfig);// 实例化上传类目前已经支持的上传驱动包括Local、Ftp、Sae、Bcs、七牛和又拍云等。

上一页  [1] [2] 


文件上传