本帖最后由 haihao_110 于 2010-07-30 09:41:12 编辑

解决方案 »

  1.   

    既然你有
    $fileName = "E:/site_data/".'/'.date('Ymd').'/'.time().rand(100,999).$ext; 
    那么就不需要而外指明路径了
    move_uploaded_file(@$_FILES['upload_file']['tmp_name'], $fileName);
      

  2.   

    $_SERVER['DOCUMENT_ROOT']  = 'D:/APMServ5.2.6/www/htdocs
    $fileName你又给"E:\site_data/".'/'.date('Ymd').'/'.time().rand(100,999).$ext;传值了两个构造在一起,肯定是不存在的路径了.$fileName = date('Ymd').'/'.time().rand(100,999).$ext;            
    move_uploaded_file(@$_FILES['upload_file']['tmp_name'],$_SERVER['DOCUMENT_ROOT'].'/'.$fileName);
    @copy($_SERVER['DOCUMENT_ROOT'].'/'.$fileName, "E:\site_data/".'/'.$fileName);
      

  3.   

    谢谢大家 但还是报错说failed to open stream: No such file or directory in D:\APMServ5.2.6\www\htdocs\shangchuan.php on line 38//$uploadFileName = $_POST['test'];
    $ext = '.txt';
    if(strrpos(@$_FILES['upload_file']['name'],'.') !== false){
        $ext = substr( @$_FILES['upload_file']['name'], strrpos(@$_FILES['upload_file']['name'], '.' ));
    }
    if(strtolower($ext) != '.txt' 
        && strtolower($ext) != '.jpg'
        && strtolower($ext) != '.gif' 
        && strtolower($ext) != '.htm'
        && strtolower($ext) != '.doc'){
        echo '上传的文件类型不符合要求';
        exit;
    }//$fileName = "E:\site_data/".'/'.date('Ymd').'/'.time().rand(100,999).$ext;            
    //move_uploaded_file(@$_FILES['upload_file']['tmp_name'],$fileName);
    $fileName = date('Ymd').'/'.time().rand(100,999).$ext;            
    move_uploaded_file(@$_FILES['upload_file']['tmp_name'],$_SERVER['DOCUMENT_ROOT'].'/'.$fileName);//就是这行
    @copy($_SERVER['DOCUMENT_ROOT'].'/'.$fileName, "E:\site_data/".'/'.$fileName);我想让上传文件保存到E:\site_data/中
      

  4.   

    你是越改越乱了!
    $fileName = "E:/site_data/".date('Ymd').'/'.time().rand(100,999).$ext; 
    你需要保证相应的目录存在并可写
    比如今天
    E:/site_data/20100730
    明天
    E:/site_data/20100731
      

  5.   

    感谢楼上的提示但是我改过后 不报错 但是上传文件后在 E:\site_data/文件夹中没有我上传的文件
    $fileName = "E:\site_data/".'/'.date('Ymd').'/'.time().rand(100,999).$ext;            
    //move_uploaded_file(@$_FILES['upload_file']['tmp_name'],$fileName);
    //$fileName = date('Ymd').'/'.time().rand(100,999).$ext;            
    move_uploaded_file(@$_FILES['upload_file']['tmp_name'],$fileName);
    @copy($_SERVER['DOCUMENT_ROOT'].'/'.$fileName, "E:\site_data/".'/'.$fileName);
    感谢大侠们赐教
      

  6.   

    <?php
    $fileName = date('Ymd').'/'.time().rand(100,999).$ext;
    $base_folder = "E:/site_data/";       
    move_uploaded_file(@$_FILES['upload_file']['tmp_name'],$base_folder.$fileName);
    ?>
      

  7.   

    $fileName = "E:/site_data/".'/'.date('Ymd').'/'.time().rand(100,999).$ext;  
    人家已经写的很清楚了,\在php里是转义,就算你要用在路径上,至少也要加两个吧
      

  8.   

    我之前也这样写过但是也是没有效果
    $ext = '.txt';
    if(strrpos(@$_FILES['upload_file']['name'],'.') !== false){
    $ext = substr( @$_FILES['upload_file']['name'], strrpos(@$_FILES['upload_file']['name'], '.' ));
    }
    if(strtolower($ext) != '.txt' 
        && strtolower($ext) != '.jpg'
        && strtolower($ext) != '.gif' 
        && strtolower($ext) != '.htm'
        && strtolower($ext) != '.doc'){
        echo '上传的文件类型不符合要求';
        exit;
    }
    $fileName = date('Ymd').'/'.time().rand(100,999).$ext;
    $base_folder = "E:/site_data/";       
    if(move_uploaded_file(@$_FILES['upload_file']['tmp_name'],$base_folder.$fileName)){
    echo "成功";}
      

  9.   

    上传成功了 但是备份文件的文件名没有上传人的名字 只有时间 大侠们帮我看看吧
    $upload_dir=="./site_data/";
    $upload_bak="./site_data/";$file=$_FILES['upload'];$ext = explode(".",$file['name']);
    $ext = $ext[count($ext)-1];  
    $filename1 = substr($file['name'],0,(strlen($file['name'])-strlen($ext)-1));              
    $bakfilename = "{$username}_{$uid}_".date("Y_m_d_H_i_s").".{$ext}";
    if(move_uploaded_file($file['tmp_name'],$upload_bak.$file['name'])){
    copy($upload_bak.$file['name'], $upload_bak.$bakfilename); 
    }
      

  10.   

    $upload_dir=="./site_data/";
    $upload_bak="./site_data/";
    //你至少要对$username赋予值.
    $username = $_POST['username'];//提交过来的名字
    //或者$username = $_COOKIE['username'];//cookie里的名字
    $file=$_FILES['upload'];$ext = explode(".",$file['name']);
    $ext = $ext[count($ext)-1];  
    $filename1 = substr($file['name'],0,(strlen($file['name'])-strlen($ext)-1));              
    $bakfilename = "{$username}_".date("Y_m_d_H_i_s").".{$ext}";
    if(move_uploaded_file($file['tmp_name'],$upload_bak.$file['name'])){
    copy($upload_bak.$file['name'], $upload_bak.$bakfilename); 
    }
      

  11.   

    请echo $_SERVER['DOCUMENT_ROOT'].'/'.$fileName);看一看
      

  12.   

    谢谢楼上的大侠们 我刚才说错了 我上传的文件备份中只有 上传人名和时间没有上传文件的名字 比如我上传的文件为 abc.txt 那么备份文件的文件名就应该是 abc_(上传人名)_(上传时间) 可现在只有 上传人名和时间 大侠们帮看看吧 谢谢
    $upload_dir=="./bak_data/";
    $upload_bak="./site_data/";$file=$_FILES['upload'];
    $username=$_POST['upname'];
    $ext = explode(".",$file['name']);
    $ext = $ext[count($ext)-1];  
    $filename1 = substr($file['name'],0,(strlen($file['name'])-strlen($ext)-1));              
    $bakfilename = "{$username}_{$uid}_".date("Y_m_d_H_i_s").".{$ext}";
    if(move_uploaded_file($file['tmp_name'],$upload_bak.$file['name'])){
    copy($upload_bak.$file['name'], $upload_bak.$bakfilename); 
    echo "上传成功";
    }
      

  13.   

    $fileName = "E:\site_data/".'/'.date('Ymd').'/'.time().rand(100,999).$ext;$_SERVER['DOCUMENT_ROOT'].'/'.$fileName);
    多么的怪异啊      绝对路径前加其他东西???
      

  14.   

    还报什么错误呢?
    还有
    if(move_uploaded_file($file['tmp_name'],$upload_bak.$file['name'])){
    copy($upload_bak.$file['name'], $upload_bak.$bakfilename); 
    echo "上传成功";
    }
    这什么意思啊,if已经将文件转移了,下面的copy多此一举
      

  15.   

    我想要备份那个上传文件啊,现在我上传的文件备份中只有 上传人名和时间,没有上传文件的名字 比如我上传的文件为 abc.txt 那么备份文件的文件名就应该是 abc_(上传人名)_(上传时间) 可现在只有 上传人名和时间 大侠们帮看看吧 谢谢
      

  16.   

    $upload_bak="./site_data/";$upload_bak.$file['name'];move_uploaded_file($file['tmp_name'],$upload_bak.$file['name']))$upload_bak.$file['name'](从上向下你看看这个应该是什么,这一看就是没组合好)
    你看看下面那个应该是什么呢,根本看不出来
      

  17.   

    试一试
    $upload_dir="./bak_data/";
    $upload_bak="./site_data/";$file=$_FILES['upload'];
    $username=$_POST['upname'];
    $ext = explode(".",$file['name']);
    $ext = $ext[count($ext)-1];  
    $filename1 = substr($file['name'],0,(strlen($file['name'])-strlen($ext)-1));              
    $bakfilename = "{$username}_{$uid}_".date("Y_m_d_H_i_s").".{$ext}";
    if(move_uploaded_file($file['tmp_name'],$upload_bak.$file['name'].'_'.$bakfilename)){
    echo "上传成功";
    }
      

  18.   


    分析下:
    $upload_bak.$file['name'].'_'.$bakfilename其中$upload_bak等于"./site_data/"
    其中$file['name']等于"abc"
    其中$bakfilename等于 "$username_$uid_".date("Y_m_d_H_i_s").".$ext"最终等于"./site_data/abc_username_uid_time.txt"
      

  19.   

    最后site_data文件夹里应该有2个文件,1个是上传的文件,文件名不变,另一个是备份文件,而备份文件的文件名为(上传文件名)_(上传人名)_(上传时间)
      

  20.   

    $upload_dir="./bak_data/";
    $upload_bak="./site_data/";$file=$_FILES['upload'];
    $username=$_POST['upname'];
    $ext = explode(".",$file['name']);
    $ext = $ext[count($ext)-1];  
    $filename1 = substr($file['name'],0,(strlen($file['name'])-strlen($ext)-1));              
    $bakfilename = "{$username}_{$uid}_".date("Y_m_d_H_i_s").".{$ext}";
    if(move_uploaded_file($file['tmp_name'],$upload_dir.$file['name'])){
    copy($upload_bak.$file['name'], $upload_bak.$file['name'].'_'.$bakfilename); 
    echo "上传成功";
    }
      

  21.   

    copy($upload_bak.$file['name'], $upload_dir.$file['name'].'_'.$bakfilename);
      

  22.   

    按楼主的想法的话$upload_bak根本没用,迷惑人
      

  23.   

    你这样写又报错了Warning: copy(./site_data/PHP对数据库的操作.txt) [function.copy]: failed to open stream: No such file or directory in D:\APMServ5.2.6\www\htdocs\shangchuan.php on line 52
    就是这句copy($upload_bak.$file['name'], $upload_bak.$file['name'].'_'.$bakfilename); 
      

  24.   

    copy($upload_dir.$file['name'], $upload_dir.$file['name'].'_'.$bakfilename);失误,楼主改下
      

  25.   

    这是最后调好的
    $filename1 = substr($file['name'],0,(strlen($file['name'])-strlen($ext)-1));              
    $bakfilename = $filename1."_{$uid}_{$username}_".date("Y_m_d_H_i_s").".{$ext}";
    if(move_uploaded_file($file['tmp_name'],$upload_bak.$file['name'])){
    copy($upload_bak.$file['name'], $upload_bak.$bakfilename); 
    echo "上传成功";