作者joedenkidd (優質的藍色射手)
看板PHP
標題[請益] 檔案是否存在判斷
時間Thu Sep 26 20:48:18 2013
各位不好意思,我用 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
1F:→ danny8376:你真的是打 \\ \t 這樣? 這根本變跳脫字元了... 09/26 21:16
2F:→ joedenkidd:我打\\\10.10.0.1\test xx\test xxx.xls 09/26 21:21
3F:→ LPH66:要在字串裡寫一個 \ 要在原始碼裡寫 \\ 09/26 21:22
4F:→ joedenkidd:url link顯示是 file://10.10.0.1/test xx/test xx.xl 09/26 21:22
5F:→ LPH66:所以應該要 '\\\\10.10.0.1\\test xx\\test xx.xls' 09/26 21:23
6F:→ joedenkidd:用 <a href='<?$file_path'?>link</a>檔案是開的出來的 09/26 21:24
7F:→ joedenkidd:我試看看!! 09/26 21:24
8F:推 ha531102:印象中 php的single quote不是不處理(大部分)特殊字元? 09/26 22:23
9F:→ danny8376:但\\還是會處理 \t映像中會忽略掉 09/26 22:34
10F:→ danny8376:沒記錯的話single quote只有\' \\會被處理? 09/26 22:34
12F:→ joedenkidd:不知道是不是因為檔案中有多個空格?我用replace一樣 09/27 09:41
13F:推 hit1205:會不會是 xxxzzz 說的原因 0.0 不過從 comment 看來 09/27 16:03
14F:→ hit1205:只發生在 win32 ... 09/27 16:04
15F:→ danny8376:樓上... 好想也只有win會有這種格式的檔案路徑耶 09/27 16:35
16F:→ danny8376: 像 09/27 16:35
17F:→ et282523:會不會是檔案狀態被 cache 住了,試試 clearstatcache() 09/28 23:34
18F:→ et282523:如果你是在同一隻 php 一開始有做讀檔的動作,後來把檔案 09/28 23:35
19F:→ et282523:刪除,判斷 file_exists 會依然是存在哦,檔案狀態會 09/28 23:36
20F:→ et282523:被暫存~所以刪完檔要做 clearstatcache() 09/28 23:36
21F:→ joedenkidd:檔案沒有被刪除,用is_dir來判斷目錄是ok,我覺得是 09/29 07:58
22F:→ joedenkidd:路徑太長或夾多個空白造成的,我記得windows路徑長度不 09/29 07:59
23F:→ joedenkidd:能超過255我用strlen看也沒有超過,我再試看看,縮短路 09/29 08:00
24F:→ joedenkidd:徑看行不行,另一個是檔名夾帶多個連續空白,目前就無 09/29 08:01
25F:→ joedenkidd:解!! 09/29 08:01
26F:推 cwlin0416:is_dir 可以, 那你用 readdir 看能不能抓到檔名 09/29 11:21