Re: [請益] 檔案上傳成功,但找不到暫存檔

看板PHP作者 (亞修)時間15年前 (2010/10/12 13:01), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《GoodTauSo (一再的失敗...)》之銘言: : 試了很多方法,都是回傳成功,但找不到暫存檔. : 大致上就是以下寫法 : if (move_uploaded_file($_FILES['thefile']['tmp_name'], : $_FILES['thefile']['name'])) : { : print '<p>successfully uploaded</p>'; : print $trgt; : } else : 略... : } : echo "Select a file:"; : echo "<form action='unit2.php' enctype='multipart/form-data' method='post'> : <p><br /> : <input type='hidden' name='MAX_FILE_SIZE' value='10000000' /> : <input type='file' name='thefile' /><br /><br /> : <input type='submit' name='submit' value='Upload !' /> : </p> : </form> : </body> : </html>" : 隨便丟了一個小txt檔,執行後,顯示successfully uploaded : 可是到$_FILES['thefile']['tmp_name']找不到暫存檔. : 是php.ini設定問題嗎? $result = move_uploaded_file($a, $b); 這指令可以判斷 $a 所指定的檔案是否透過正常標準的 upload 流程傳上來的 如果是,則搬移到 $b 指定的位址去 假設 $a 裡面存的路徑是 /etc/passwd 之類的位址,那怎麼辦?所以一般都會用 move_uploaded_file 這指令來檢查 (這只是假設.../etc/passwd非root是無法讀取的@@") 另外你有把 $_FILE 的變數印出來看過嗎 它應該會長的像這樣 [thefile] => Array ( [name] => MyFile.jpg [type] => image/jpeg [tmp_name] => /tmp/php6hst32 [error] => UPLOAD_ERR_OK [size] => 98174 ) 你的程式寫這樣... if (move_uploaded_file($_FILES['thefile']['tmp_name'], $_FILES['thefile']['name'])){ 略... } 所以執行的時候會變成這樣... if (move_uploaded_file('/tmp/php6hst32', 'MyFile.jpg')){ 略... } 把 '/tmp/php6hst32' 這個暫存檔 移動到 'MyFile.jpg' 這裡...(沒帶路徑的結果會被搬到 PHP 執行工作目錄下面...) 所以通常會加上路徑,例如 if (move_uploaded_file($_FILES['thefile']['tmp_name'], '/var/www/hthocs/upload/'.$_FILES['thefile']['name'])){ 略... } 類似這樣...當然路徑要先檢查是否存在以及能否寫入之類的...這地方就不先說明了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.250.168.178

10/12 18:20, , 1F
暫存檔還真的跟php檔同目錄= ="
10/12 18:20, 1F
文章代碼(AID): #1Ci-kUCR (PHP)
文章代碼(AID): #1Ci-kUCR (PHP)