【问题标题】:How to rename file when using move_uploaded_file()?使用 move_uploaded_file() 时如何重命名文件?
【发布时间】:2015-02-05 14:06:45
【问题描述】:

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

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

警告: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”)

上下文:

  • 服务器:使用 XAMPP 软件的本地主机
  • file_upload = 在 php.ini 上是
  • 文件夹权限 = 是
  • 文件夹存在 = 是
  • 表单操作 = 自我
  • 表单方法 = 发布
  • Form 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>              
    
  • 【问题讨论】:

    • failed to open stream: No such file or directory... 您尝试移动的文件不在您认为的位置。
    • 你试过move_uploaded_file($_FILES['file']['tmp_name'], $location.$_FILES['file']['name']);吗?

    标签: php forms upload rename


    【解决方案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。因此这是当前的工作目录。因此,尝试写入另一个 relative 路径前缀为CUSTOM/ 的文件将»加倍«假定的目标目录名称。

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

    【讨论】:

    • 愿幸运永远降临在你身上。现在,这引出了我的下一个问题:如何设置相对于站点目录的路径?以下是我的参考路径:
      Site Dir = "C:\XAMPP" Script Dir = "C:\XAMPP\htdocs\SCRIPTS\upload.php" Uploads Dir = "C:\XAMPP\htdocs\UPLOADS"
    猜你喜欢
    • 2014-02-08
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2020-04-03
    • 2011-01-30
    • 2011-03-30
    相关资源
    最近更新 更多