[請益] 檔案是否存在判斷

看板PHP作者 (優質的藍色射手)時間12年前 (2013/09/26 20:48), 編輯推噓4(4022)
留言26則, 8人參與, 最新討論串1/1
各位不好意思,我用 is_file無法正確判斷檔案是否存在 程式流程如下 1 設定 file_path='\\10.10.0.1\test xx\test xx.xls'; 2 rawurlencode(file_path)-->寫到db 3 將file_path讀出來,用 rawurldecode($file_path) 4 用超連結這個路徑,檔案開的起來 現在問題來了,問題出在我用 is_file($file_path)檔案被判定不存在, 我也試著用file_exists判斷,不知道出了什麼問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.247.73

09/26 21:16, , 1F
你真的是打 \\ \t 這樣? 這根本變跳脫字元了...
09/26 21:16, 1F

09/26 21:21, , 2F
我打\\\10.10.0.1\test xx\test xxx.xls
09/26 21:21, 2F

09/26 21:22, , 3F
要在字串裡寫一個 \ 要在原始碼裡寫 \\
09/26 21:22, 3F

09/26 21:22, , 4F
url link顯示是 file://10.10.0.1/test xx/test xx.xl
09/26 21:22, 4F

09/26 21:23, , 5F
所以應該要 '\\\\10.10.0.1\\test xx\\test xx.xls'
09/26 21:23, 5F

09/26 21:24, , 6F
用 <a href='<?$file_path'?>link</a>檔案是開的出來的
09/26 21:24, 6F

09/26 21:24, , 7F
我試看看!!
09/26 21:24, 7F

09/26 22:23, , 8F
印象中 php的single quote不是不處理(大部分)特殊字元?
09/26 22:23, 8F

09/26 22:34, , 9F
但\\還是會處理 \t映像中會忽略掉
09/26 22:34, 9F

09/26 22:34, , 10F
沒記錯的話single quote只有\' \\會被處理?
09/26 22:34, 10F

09/27 09:41, , 12F
不知道是不是因為檔案中有多個空格?我用replace一樣
09/27 09:41, 12F

09/27 16:03, , 13F
會不會是 xxxzzz 說的原因 0.0 不過從 comment 看來
09/27 16:03, 13F

09/27 16:04, , 14F
只發生在 win32 ...
09/27 16:04, 14F

09/27 16:35, , 15F
樓上... 好想也只有win會有這種格式的檔案路徑耶
09/27 16:35, 15F

09/27 16:35, , 16F
09/27 16:35, 16F

09/28 23:34, , 17F
會不會是檔案狀態被 cache 住了,試試 clearstatcache()
09/28 23:34, 17F

09/28 23:35, , 18F
如果你是在同一隻 php 一開始有做讀檔的動作,後來把檔案
09/28 23:35, 18F

09/28 23:36, , 19F
刪除,判斷 file_exists 會依然是存在哦,檔案狀態會
09/28 23:36, 19F

09/28 23:36, , 20F
被暫存~所以刪完檔要做 clearstatcache()
09/28 23:36, 20F

09/29 07:58, , 21F
檔案沒有被刪除,用is_dir來判斷目錄是ok,我覺得是
09/29 07:58, 21F

09/29 07:59, , 22F
路徑太長或夾多個空白造成的,我記得windows路徑長度不
09/29 07:59, 22F

09/29 08:00, , 23F
能超過255我用strlen看也沒有超過,我再試看看,縮短路
09/29 08:00, 23F

09/29 08:01, , 24F
徑看行不行,另一個是檔名夾帶多個連續空白,目前就無
09/29 08:01, 24F

09/29 08:01, , 25F
解!!
09/29 08:01, 25F

09/29 11:21, , 26F
is_dir 可以, 那你用 readdir 看能不能抓到檔名
09/29 11:21, 26F
文章代碼(AID): #1IH2qKP8 (PHP)
文章代碼(AID): #1IH2qKP8 (PHP)