【问题标题】:Remove space in file name after php upload doe not workphp上传后删除文件名中的空格不起作用
【发布时间】:2018-12-13 16:34:18
【问题描述】:

我有一个有效的 php 上传脚本,但上传后重命名文件的行被忽略/不起作用。

这是相关部分:

        if (!file_exists($uploaddir . $_FILES["file"]["name"]))
        {
            // Proceed with file upload
            if (is_uploaded_file($_FILES['file']['tmp_name']))
            {
                //File was uploaded to the temp dir, continue upload process
                if (move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir . $_FILES['file']['name']))
                {
                    //chown ($uploaddir . $_FILES['file']['name'], 'www-data');
                    //chmod ($uploaddir . $_FILES['file']['name'], 0755);
                    $name = str_replace(" ", "_", $uploaddir . $_FILES['file']['name']);
                    // uploaded file was moved and renamed succesfuly. Display a message.
                    // Now log the uploaders IP adress date and time
                    $date = date("m/d/Y"); 
                    $time = date("h:i:s A");                
                    $fp = fopen($log,"ab"); 
                    fwrite($fp,"$ip | ".$_FILES['file']['name']." | $date | $time | OK"."\r\n"); 
                    fclose($fp); 

                    $to = 'mail@sjn.net';
                    $subject = 'Upload Completed'; 
                    $headers = "From: mail@sjn.net\nContent-Type: text/html; charset=iso-8859-1";

                    ob_start();
                ?>

                    <p>A file has been succesfully uploaded! - https://www.sjn.net/upload/<?php echo $_FILES['file']['name']; ?></p>

                <?php
                    $message = ob_get_clean();
                    $mail_sent = @mail( $to, $subject, $message, $headers );
                    echo "Upload erfolgreich! Link zur Datei:<br><input size='50' type='text' value='https://www.sjn.net/upload/".$_FILES['file']['name']."' id='myInput'><button onclick='myFunction()'>in Zwischenablage</button><script>function myFunction() {var copyText = document.getElementById('myInput');copyText.select();document.execCommand('copy');}</script>";

                }

如您所见,我已经尝试处理权限但没有更改。 文件没有重命名替换空格可能是什么?

【问题讨论】:

  • $fp = fopen($log,"ab"); ab 这里是什么意思?应该是aa+

标签: php upload rename


【解决方案1】:

尝试使用下面的代码,我刚刚在 move_uploaded_file() 函数之前更改并用下划线替换了空格并使用了该变量。如果对您有用,请尝试此方法。

   if (!file_exists($uploaddir . $_FILES["file"]["name"]))
    {
        if (is_uploaded_file($_FILES['file']['tmp_name']))
        {
            $filename = str_replace(' ', '_', $_FILES['file']['name']);

            if (move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir . $filename))
            {
                $name = str_replace(" ", "_", $uploaddir . $filename);

                $date = date("m/d/Y"); 
                $time = date("h:i:s A");                
                $fp = fopen($log,"ab"); 
                fwrite($fp,"$ip | ".$filename." | $date | $time | OK"."\r\n"); 
                fclose($fp); 

                $to = 'mail@sjn.net';
                $subject = 'Upload Completed'; 
                $headers = "From: mail@sjn.net\nContent-Type: text/html; charset=iso-8859-1";

                ob_start();
            ?>

                <p>A file has been succesfully uploaded! - https://www.sjn.net/upload/<?php echo $filename; ?></p>

            <?php
                $message = ob_get_clean();
                $mail_sent = @mail( $to, $subject, $message, $headers );
                echo "Upload erfolgreich! Link zur Datei:<br><input size='50' type='text' value='https://www.sjn.net/upload/".$filename."' id='myInput'><button onclick='myFunction()'>in Zwischenablage</button><script>function myFunction() {var copyText = document.getElementById('myInput');copyText.select();document.execCommand('copy');}</script>";

            }
        }

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-06
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2013-10-29
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多