我要用php上传文件,上传后要把文件从命名下,但用move_uploaded_file();的话怎样保持按照原来的文件类型来命名,但用rename的话
rename($_FILES[u_file][name],$u_name.".".$_FILES['u_file']['type']);他显示这样的错误,显示这样的错误Warning: rename(no_name.rar,牛逼application/octet-stream)[function.rename]: No such file or directory in C:\APMServ5.2.6\www\htdocs\WEB\upcomponent.php on line 64,求高手帮忙看下,先谢谢喽!

解决方案 »

  1.   

    $_FILES['u_file']['type']文件类型只不过是从浏览器发送信息中提取的一个值,
    跟实际的文件类型时两码事。也就是说,如果浏览器不发送文件类型,那么,通过$_FILES['u_file']['type']也就无法正确判断上传的文件类型。
    IE一般都不会正确发送文件类型信息,所以,建议lz放弃使用$_FILES['u_file']['type']判断类型,
    而直接用扩展名就可以了。
      

  2.   

    $_FILES['u_file']['type'] 是档案的mine类型并非档案的副档名(扩展名)取得档案的副档名(扩展名):
    $subfilename = strtolower(substr($_FILES['u_file']['type'], strrpos($_FILES['u_file']['type'], ".")+1));
    $newFilename = $u_name.'.'.$subfilename;
      

  3.   

    上面的我打错了小许, 取得档案的副档名(扩展名)这样才对
    $subfilename = strtolower(substr($_FILES['u_file']['name'], strrpos($_FILES['u_file']['name'], ".")+1));
    $newFilename = $u_name.'.'.$subfilename;
      

  4.   


    $oldname=$_FILES['movieSource']['name'];
    $temp=strrpos($oldname,".");
    $temp1=strlen($oldname);
    $fileStyle=substr($oldname,$temp,$temp1);
    $basefileName=substr($oldname,0,$temp);
    $md5fileName=md5($basefileName);
    $timefileName=time();
    $finalfileName=$md5fileName.$timefileName;$flvOut=$finalfileName.".flv";
    $aviOut=$finalfileName.".avi";
    $jpgOut=$finalfileName.".jpg";这是我做一个视频上传网站的时候用的.