2016-04-05 53 views
1

我存儲在我的數據庫連接的圖像及其完整路徑:即在附件欄中,這樣的數據將被描繪:檢查文件夾中(一個或多個)文件的存在,然後檢查它的文件大小()

user_data/attached_files/conor-mcgregor.jpg 

圖像存儲在user_data> attached_files>圖像在這裏。

我想要做的是從數據庫中獲取圖像名稱,檢查圖像名稱是否存在於attached_files文件夾中,然後檢查其大小。

當然,我必須獲得的形象,這是我做過的basename

$get_msg = mysqli_fetch_assoc($get_messages); 
$img_url = $get_msg['attachment']; 

$file = $img_url; 
$arrPathInfo = pathinfo($file); 
$shortened_url = $arrPathInfo['basename']; 

如果我贊同$shortened_url我得到conor-mcgregor.jpg,這是有效的,該名稱的圖像在attached_files文件夾中存在。但是,當我運行這個測試,看看是否存在該文件,則返回false:

if (file_exists($shortened_url)) { 
    echo "true"; 
} else { 
    echo "false"; 
} 

因此,如果該文件與conor-mcgregor.jpg存在,那麼(現在)返回true,但最終我會做filesize($shortened_url);。如果它不存在,則返回false。

該文件確實存在,但我不明白它爲什麼打印爲false?

+0

位於您的網站或/ USER_DATA/attached_files /根目錄下的PHP腳本? –

+0

'user_data/attached_files /'將需要完整的系統路徑,如'/ var/user/public/user_data/attached_files /'或相對路徑。 '../ user_data/attached_files /'類型的東西。錯誤報告會在這裏幫助你。 –

回答

0

我會建議你使用is_file(),而不是file_exists()對你的情況

PHP is_file manual

我認爲你的PHP腳本位於網站的根文件夾,然後選中在子文件夾應該看起來像文件的存在:

$fpath = "user_data/attached_files/{$shortened_url}"; 

if (file_exists($fpath)) { 
    echo "true"; 
    // echo filesize($fpath); 
} else { 
    echo "false"; 
} 
+0

啊,我看到我的錯。我正在處理的文件不在根目錄中,這就是爲什麼它找不到文件。出於好奇,爲什麼你在這行中有{}:'{$ shortened_url}'?我從來沒有見過。 – Freddy

+0

對於「strings」裏的簡單php變量名沒有必要,但是會阻止php爲包含「like」{$ var ['key']}「的變量放置反斜槓。也有助於識別字符串內的PHP變量只是視覺 –

+0

你可以在這裏找到更多的信息:http://php.net/manual/en/language.types.string.php#language.types.string.parsing –

0
// you need to include the path from the file the php is executed 
$shortened_url = 'user_data/attached_files/'.$arrPathInfo['basename']; 

if (file_exists($shortened_url)) { 
    echo filesize($shortened_url).' bytes'; 
} else { 
echo 'no file'; 
} 
相關問題