$upload->savePath= './Public/image/home/news/';

if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info =  $upload->getUploadFileInfo();
}
这个上传目录不是只能设置一个么,怎么设置两个,thinkphp上传类第一次用。

解决方案 »

  1.   

    thinkphp3.1 没有提供相应的方案,所以需要你自己设计
    你可以继承 UploadFile 类,重写 save 方法
    也可以用自己的上传类完成
      

  2.   

    提交到php的文件和图片的后缀是不一样的,你判断分别指定不同的路径就好了···········
    顶一楼
      

  3.   

    如果你可以获取文件后缀$typeif ($type == '.jpg'){
        $upload->savePath= './Public/image/home/new1/';
        if(!$upload->upload()) {// 上传错误提示错误信息
            $this->error($upload->getErrorMsg());
        }else{// 上传成功 获取上传文件信息
            $info =  $upload->getUploadFileInfo();
    }
    }else if ($type == '.txt'){
        $upload->savePath= './Public/image/home/new2/';
        if(!$upload->upload()) {// 上传错误提示错误信息
            $this->error($upload->getErrorMsg());
        }else{// 上传成功 获取上传文件信息
            $info =  $upload->getUploadFileInfo();
        }
    }
      

  4.   

    如果同时上传多个文件,应该会有多个file文件域吧?
    <input name="file[1]" type="file">
    <input name="file[2]" type="file">
    <input name="file[3]" type="file">
    这就对file判断不就是?
      

  5.   

    如果你愿意修改 UploadFile.class.php 文件的话,事情还是有转机的
    把 getSaveName 方法中的(408行附近)
    $saveName = $rule().".".$filename['extension'];
    改成
    $saveName = $rule($filename).".".$filename['extension'];然后$upload->savePath = '';
    $upload->saveRule = 'myFunction';
    定义函数function myFunction($filename) {
      $p = in_array($filename['extension'], array('gif', 'jpg', 'png')) ? '图片路径' : '文档路径';
      return $p . $filename['name'];
    }
    由于之后还会加上后缀,所以 $filename['name'] 怎么变形你可随意
      

  6.   

    import('ORG.Net.UploadFile');
    $upload = new UploadFile();// 实例化上传类
    $upload->maxSize = 3145728;
    $upload->savePath = '';
    $upload->saveRule = 'myFunction';
    if(!$upload->upload()) {// 上传错误提示错误信息
    $this->error($upload->getErrorMsg());
    }else{// 上传成功 获取上传文件信息
    $info =  $upload->getUploadFileInfo();
    }private function getSaveName($filename) {
            $rule = $this->saveRule;
            if(empty($rule)) {//没有定义命名规则,则保持文件名不变
                $saveName = $filename['name'];
            }else {
                if(function_exists($rule)) {
                    //使用函数生成一个唯一文件标识号
                    $saveName = $rule($filename).".".$filename['extension'];
                }else {
                    //使用给定的文件名作为标识号
                    $saveName = $rule.".".$filename['extension'];
                }
            }
            if($this->autoSub) {
                // 使用子目录保存文件
                $filename['savename'] = $saveName;
                $saveName = $this->getSubName($filename).$saveName;
            }
            return $saveName;
        }
    function my_filename() {
    return date('ymdHis',time()).'_'.mt_rand();
    }function myFunction($filename) {
    $p = in_array($filename['extension'], array('gif', 'jpg', 'png')) ? './Public/image/home/img/' : './Public/image/home/file/';
    return $p . $filename[my_filename()];
    }
    改了,这三个地方,提示上传路径不存在。
      

  7.   

    既然你的 ./Public/image/home/ 是公共的,那么就
    $upload->savePath = './Public/image/home/';
    函数里只留 'img/' : 'file/'
      

  8.   

    版主大大,路径可以用了,不过现在是名字是空的了。
    文件已经存在!./Public/image/home/img/.jpg
      

  9.   

    return $p . $filename[my_filename()];
    应为
    return $p . my_filename();可直接写作
    return $p . date('ymdHis_').mt_rand();