php移動檔案的函式move_uploaded_file()和copy

y0umer發表於2011-08-12

 最近遇到的問題就是:使用者提交一個圖片,我這邊給縮放成三種格式的大小,縮放的方法存在,所以我這邊直接就呼叫三次,結果只有一張圖片上傳,採用迴圈呼叫的方法還是隻有一個圖片,後來發現 提交檔案的時候有一個移動函式 move_uploaded_file(),這個函式雖然多次呼叫但是隻能執行一次,原因就在於 move_uploaded_file()只支援post提交的資訊,也就是使用者至提交了一個post,第一次呼叫被執行後,之後就不是post的值也就是說不在執行了,解決辦法就是用copy代替 move_uploaded_file()

參考官方手冊的說明: move_uploaded_file()

本函式檢查並確保由 file 指定的檔案是合法的上傳檔案(即通過 PHP 的 HTTP POST 上傳機制所上傳的)。如果檔案合法,則將其移動為由 newloc 指定的檔案。

如果 file 不是合法的上傳檔案,不會出現任何操作,move_uploaded_file() 將返回 false。

如果 file 是合法的上傳檔案,但出於某些原因無法移動,不會出現任何操作,move_uploaded_file() 將返回 false,此外還會發出一條警告。

這種檢查顯得格外重要,如果上傳的檔案有可能會造成對使用者或本系統的其他使用者顯示其內容的話。

提示和註釋

註釋:本函式僅用於通過 HTTP POST 上傳的檔案。

注意:如果目標檔案已經存在,將會被覆蓋。


相關文章