首頁 後端開發 php教程 如何重新定義上傳檔案名稱的實例詳解

如何重新定義上傳檔案名稱的實例詳解

May 02, 2017 am 11:28 AM

在上傳文件時需要指定上傳文件路徑,但是,如果面對大量用戶上傳的不同文件,難免會有重名的可能,這樣就會造成文件替換,從而導致文件丟失,所以對上傳文件的名稱進行重新定義是非常重要的。本章就帶你了解。怎麼定義上傳檔案的名稱呢?

首先我們透過strstr()函數對上傳檔案的名稱進行截取,取得上傳檔案的後綴。

然後透過time()函數取得系統目前時間戳,重新定義上傳檔案的名稱

在利用move_uploaded_file()函數實作檔案上傳。

在執行檔案上傳之前,為了防止潛在的攻擊,對原本無法透過腳本互動的檔案進行非法管理,應利用is_uploaded_file()函數判斷指定的檔案是否透過HTTP POST上傳的,如果是,則傳回一個true。

is_uploaded_file()函數

is_uploaded_file()函數判斷指定的檔案是否透過HTTP POST上傳的,其語法如下:

is_uploaded_file(filename)
登入後複製

參數 filename必須指定類似$_FILES['filename']['tmp_name']的變量,不可以使用從客戶端上傳的檔案名稱$_FILES['filename']['name']

如何重新定義上傳檔案名稱的實例詳解#透過is_uploaded_file()函數對上傳文件進行判斷,可以確保惡意使用者無法欺騙腳本去存取不能存取的文件,如/etc/passwd。

move_uploaded_file()函數

#move_uploaded_file()函數將檔案上傳到伺服器中指定的位置。如果成功回傳true。否則傳回false,語法如下

move_uploaded_file(filename,destination)
登入後複製

參數filename指定上傳檔案的暫存檔案名,即$_FILES[tmp_name];參數destination指檔案上傳後儲存的新路徑和名稱。如果參數filename不是合法的上傳文件,則不會出現任何操作,

move_uploaded_file() 將傳回false;如果參數filename是合法的上傳文件,但出於某些原因無法移動,也不會出現任何的操作,move_uploaded_file()將傳回False,此外還會發出警告訊息。

最後使用rand函數,並使用它隨機產生的隨機整數作為上傳檔案的新名稱。

應用範例

#本範例重新定義上傳檔案的名稱,選擇要上傳檔案的名稱,按一下「上傳」按鈕,檔案將上傳到程式中指定的本機路徑下的upfile資料夾中,並重新定義檔案名稱。

如何重新定義上傳檔案名稱的實例詳解

本範例的關鍵程式碼如下:

<?PHP
header("content-type:text/html;charset=utf-8");
if(!empty($_FILES[up_picture][name])){                                       //判断上传文件是否为空
    if($_FILES[&#39;up_picture&#39;][&#39;error&#39;]>0){                                    //判断文件是否可以上传到服务器
        echo "上传错误";
        switch($_FILES[&#39;up_picture&#39;][&#39;error&#39;]){
            case 1:
                echo "上传文件大小超出配置文件规定值";
                break;
            case 2:
                echo "上传文件大小超出表单中约定值";
                break;
            case 3:
                echo "上传文件不全";
                break;
            case 4:
                echo "没有上传文件";
                break;
        }
    }else{
        if(!is_dir("./upfile/")){                                           //判断指定目录是否存在
            mkdir("./upfile/");                                             //创建目录
        }
        $path=&#39;./upfile/&#39;.time().strstr($_FILES[&#39;up_picture&#39;][&#39;name&#39;],&#39;.&#39;);//定义文件名称和存储位置
        if(is_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;])){           //判断是否通过HTTP POST上传的
            if(!move_uploaded_file($_FILES[&#39;up_picture&#39;][&#39;tmp_name&#39;],$path)){       //执行上传
                echo "上传失败";
            }else{
                echo "文件".time().$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."上传成功,大小为:".$_FILES[&#39;up_picture&#39;][&#39;size&#39;];
            }
        }else{
            echo "上传文件".$_FILES[&#39;up_picture&#39;][&#39;name&#39;]."不合法!";
        }
    }
}
?>
登入後複製

如何重新定義上傳檔案名稱的實例詳解定義上傳檔案的名稱在上傳檔案程式中必是必不可少的一個功能,透過他可以避免重名檔案被替換,單著可能會導致存在很多相同內容的檔案。更多請關注PHP檔案處理專題

【相關文章推薦】

PHP檔案上傳-move_uploaded_file()函數的使用詳解

以上是如何重新定義上傳檔案名稱的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP應用程式:使用目前日期作為檔名 PHP應用程式:使用目前日期作為檔名 Jun 20, 2023 am 09:33 AM

在PHP應用程式中,我們有時需要使用目前日期作為檔案名稱來儲存或上傳檔案。雖然可以手動輸入日期,但使用當前日期作為檔案名稱可以更方便、快速和準確。在PHP中,我們可以使用date()函數來取得目前日期。此函數的使用方法為:date(format,timestamp);其中,format為日期格式字串,timestamp為表示日期和時間的時間戳,不傳遞此參數將使用

PHP中文檔案名稱亂碼問題處理技巧 PHP中文檔案名稱亂碼問題處理技巧 Feb 27, 2024 pm 02:18 PM

PHP中文檔案名稱亂碼問題處理技巧在開發過程中,常常會遇到處理中文檔案名稱亂碼的問題,尤其是在處理使用者上傳的檔案時。在PHP中,如何正確處理檔案名稱亂碼是比較常見且重要的問題。本文將介紹一些處理中文檔案名稱亂碼問題的技巧,並提供具體的程式碼範例,幫助讀者更好地應對這個挑戰。問題描述當使用者上傳檔案時,有時會出現中文檔案名稱亂碼的狀況。這是因為不同的作業系統和瀏覽器對

Java如何遍歷資料夾並取得所有檔案名 Java如何遍歷資料夾並取得所有檔案名 Mar 29, 2024 pm 01:24 PM

Java是一種流行的程式語言,具有強大的檔案處理功能。在Java中,遍歷資料夾並取得所有檔案名稱是一種常見的操作,可以幫助我們快速定位和處理特定目錄下的檔案。本文將介紹如何在Java中實作遍歷資料夾並取得所有檔案名稱的方法,並提供具體的程式碼範例。 1.使用遞歸方法遍歷資料夾我們可以使用遞歸方法遍歷資料夾,遞歸方法是一種自身呼叫自身的方式,可以有效地遍歷資料夾中

win10檔名太長不能刪除的處理操作步驟 win10檔名太長不能刪除的處理操作步驟 Mar 27, 2024 pm 04:41 PM

1.先找到自己需要進行刪除的檔案或資料夾,由於檔案名稱太長,在進行刪除操作的時候系統會提示,【由於檔案名稱太長,無法刪除檔案或目錄】;如圖所示:2 、此時快捷鍵【Win+R】打開運行,輸入【cmd】,確定後打開命令提示符;如圖所示:3、先切換到文件所在的盤,我的在D,輸入【D:】 ,然後再切換到文件所在資料夾,我的在【1】,輸入【cd1】,再輸入【dir】即可看到該目錄下的所有文件,我的這個目錄下就只有一個需要刪除的文件;如圖:4.此時輸入【del*.png】,即把該目錄裡面所有以png為後綴的文

如何批次修改檔案名稱 如何批次修改檔案名稱 Nov 09, 2023 am 10:05 AM

批次修改檔名的方法有使用mv指令、使用rename指令、使用find指令結合mv指令、使用mmv指令等。詳細介紹:1、使用mv指令,mv指令是Linux系統中用來移動檔案或重新命名檔案的指令,透過mv指令,可以將一個檔案移動到另一個位置,並且可以同時修改檔案名稱;2、使用rename指令,rename指令是一個強大的批次檔案重命名工具,它可以透過正規表示式來匹配和取代檔案名稱等等。

使用path/filepath.Split函數將路徑拆分為目錄和檔案名稱兩部分 使用path/filepath.Split函數將路徑拆分為目錄和檔案名稱兩部分 Jul 25, 2023 pm 05:57 PM

使用path/filepath.Split函數將路徑拆分為目錄和檔案名稱兩部分在開發程式或處理檔案時,經常需要將路徑拆分為目錄和檔案名稱兩部分進行操作。在Go語言中,可以使用path/filepath套件中的Split函數來實現這項功能。本文將介紹Split函數的用法,並給出程式碼範例。 Split函數的定義如下:funcSplit(pathstring)(di

win7系統檔名變成藍色怎麼辦 win7系統檔名變成藍色怎麼辦 Jul 20, 2023 pm 11:57 PM

win7系統檔名變成藍色怎麼辦? win7系統是目前最多人使用的Windows系統,擁有非常悠久的發展歷史,深受使用者的喜愛。不過win7系統也有著大大小小的問題,就有不少小夥伴在使用win7系統的時候,會發現電腦的檔案名字變成藍色的,新建的其他資料夾也會變成藍色,這是什麼情況又要如何解決呢?下面就由小編為大家帶來win7系統檔名變成藍色恢復方法。 win7系統檔案名稱變成藍色復原方法1.首先右鍵點選出現藍色檔案名稱的磁碟,開啟屬性。 2.在屬性視窗中找到壓縮此磁碟機以節省磁碟空間的選項,將其去掉

Win11找不到檔案請確定檔案名稱是否正確怎麼解決?詳情 Win11找不到檔案請確定檔案名稱是否正確怎麼解決?詳情 Feb 01, 2024 pm 04:09 PM

我們在使用win11電腦的時候會直接的搜尋檔案名稱來讓自己快速的找到自己想要的資料等等,不過也有不少的用戶們在搜尋的時候發現電腦彈出請確定檔案名稱是否正確的彈框,那這該怎麼辦?使用者可以直接的進入到運行視窗下的HKEY_CURRENT_USER路徑來進行設置,下面就讓本站來為用戶們來仔細的介紹一下Win11找不到文件請確定文件名是否正確怎麼解決吧。 Win11找不到檔案請確定檔案名稱是否正確怎麼解決?詳情方法一、1、在鍵盤上同時按下Win+R快捷鍵,開啟執行視窗。 3.在登錄編輯器中展開HKEY_CU

See all articles