使用move_uploaded_file()时如何重命名文件?

时间:2014-12-07 23:32:09

标签: php forms upload rename

问题:无论我在任何网站上找到什么方法,我都无法重命名我的文件。我总是收到此错误

  

警告:move_uploaded_file(CUSTOM / TestFile.txt):无法打开流:第7行的C:\ XAMPP \ htdocs \ CUSTOM \ upload.php中没有此类文件或目录

     

警告:move_uploaded_file():无法在第7行的C:\ XAMPP \ htdocs \ CUSTOM \ upload.php中将'C:\ XAMPP \ tmp \ php7AAB.tmp'移动到'CUSTOM / TestFile.txt'

如果我不尝试重命名上传的文件,则上传成功,但是,文件重命名为文件夹名称(在本例中为“CUSTOM”)

背景:

  • 服务器:使用XAMPP软件的Localhost
  • php.ini上的file_upload = yes
  • 文件夹权限=是
  • 文件夹存在=是
  • 表格动作=自我
  • 表单方法=发布
  • 使用表单Enctype =

    愿财富永远属于找到解决方案的人。

        <?php  
    
            $fname = $_FILES['file']['name'];  
            $ftemp = $_FILES['file']['tmp_name'];  
            $location = "CUSTOM/";  
    
            move_uploaded_file($ftemp, $location.$fname);  
    
            ?>  
    
            <html>                     
            <body>             
    
    
            <form action="upload.php" method="post" enctype="multipart/form-data">        
                <input type="file" name="file" ><br/>        
                <input type="submit" value="Upload File">        
            </form>        
    
    
        </body>        
        </html>              
    
  • 1 个答案:

    答案 0 :(得分:1)

    这不是你的问题:

      

    Warning: move_uploaded_file(): Unable to move 'C:\XAMPP\tmp\php7AAB.tmp'

    但这是:

      

    to 'CUSTOM/TestFile.txt'

    因为:

      

    in C:\XAMPP\htdocs\CUSTOM\upload.php on line 7

    您实际上是在尝试将临时文件移至 CUSTOM/CUSTOM/TestFile.txt 。您应该提到的上传脚本已驻留在CUSTOM中。因此,这是当前的工作目录。因此,尝试使用CUSTOM/的另一个 相对 路径前缀写入文件将“加倍”所谓的目标目录名称。< / p>

    顺便说一句,客户提供的name可以是任何 - 甚至是index.php或覆盖upload.php,甚至可能是../../boot.ini。不要只接受任何用户输入。至少在可行的情况下应用basename白名单,使用与脚本所在位置不同的目标文件夹,并禁止每.htaccess等执行CGI / PHP。