用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6159|回复: 5
收起左侧

[讨论/交流] 在ci框架中使用php的代码上传文件有问题

[复制链接]
发表于 2011-11-7 10:51:23 | 显示全部楼层 |阅读模式

今天,我没有使用ci框架中的类上传文件,使用的是php本身的上传函数,但是出现下面的错误
Message: move_uploaded_file(http://localhost/test2/upload/20111107101155eye.jpg) [function.move-uploaded-file]: failed to open stream: HTTP wrapper does not support writeable connections
Filename: controllers/upload.php
Line Number: 49
A PHP Error was encounteredSeverity: Warning
Message: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xampp\tmp\php2822.tmp' to 'http://localhost/test2/upload/20111107101155eye.jpg'
Filename: controllers/upload.php
Line Number: 49


这是我的代码
function handle(){
   $array_type=array(
   "jpg",
   "gif",
   "png",
   "jpeg",
   "JPEG",
   "JPG",
   "GIF",
   "PNG",
   "rar");  //上传文件的类型
   date_default_timezone_set("PRC");
   $time=date("Ymdhms",time());
  
filepath为文件上传后保存的文件夹
   $filepath=base_url().'upload/';

  $filename为我的file的名字
   $filename='userfile';
   
   $name=$filepath.$time.$_FILES[$filename]['name'];
   $type= substr(strrchr($_FILES[$filename]['name'], "."), 1);//获得上传的后缀
  
   if(in_array($type, $array_type)){
   
    //如果上传文件合法
    if($_FILES[$filename]['size']>3000000){
     $value=$time.$_FILES[$filename]['name'];
     return $value;   //上传文件不可以大于2M
    }
    else if(move_uploaded_file($_FILES[$filename]["tmp_name"], $name)){
     $value=$time.$_FILES[$filename]['name'];
   
     return $value;//上传成功
    }
   }else{
    $value=$time.$_FILES[$filename]['name'];
   
    return $value;//上传文件不合法
   }
  }





发表于 2011-12-1 09:23:01 | 显示全部楼层
看信息,好像是没有权限移动文件,而且你要移动到的路径为什么是个URL而不是绝对地址呢?
发表于 2011-12-1 11:05:33 | 显示全部楼层
$filepath=base_url().'upload/';

这个感觉有问题
发表于 2011-12-4 02:45:13 | 显示全部楼层
楼上说的对,$filepath是文件系统路径,而 base_url() 这是 URL。
文件系统和URL是两码事,不能混淆。
发表于 2014-10-17 13:30:56 | 显示全部楼层
楼主解决了吗
发表于 2014-11-25 14:44:51 | 显示全部楼层
HEX 兄说的对, 只要将url换成文件的路径既可以了!
可以用$_SERVER['DOCUMENT_ROOT'] 然后连接上你的upload路径就可以了!
已经测试  可以成功移动上传文件!

本版积分规则