1. 程式人生 > >php如何判斷檔案是否存在,包括本地和遠端檔案

php如何判斷檔案是否存在,包括本地和遠端檔案

當檢查的檔案是本地時用php自帶的file_exists檢查就行了,而此函式只能檢查本地的函式是否存在,

所以如果要檢查遠端的檔案是否存在只能用其它的方法了。

如果所伺服器中php的配置開啟了“allow_url_fopen = On”,即允許遠端訪問,那麼也很簡單,其實這個是php.ini中預設開啟的,

用fopen函式判斷就行了,能開啟說明存在

如果allow_url_fopen = Off那麼可以用socket通訊來解決

下面寫的一個通用函式my_file_exists來檢查檔案是否存在

function my_file_exists($file)
{
	if(preg_match('/^http:\/\//',$file)){
		//遠端檔案
		if(ini_get('allow_url_fopen')){
			if(@fopen($file,'r')) return true;
		}
		else{
			$parseurl=parse_url($file);
			$host=$parseurl['host'];
			$path=$parseurl['path'];
			$fp=fsockopen($host,80, $errno, $errstr, 10);
			if(!$fp)return false;
			fputs($fp,"GET {$path} HTTP/1.1 \r\nhost:{$host}\r\n\r\n");
			if(preg_match('/HTTP\/1.1 200/',fgets($fp,1024))) return true;
		}
		return false;
	}
	return file_exists($file);
}

現在就可以呼叫此函式來檢查檔案的存在性,而不用去考慮是遠端還是本地檔案,或者是否禁用了allow_url_open

相關推薦

php如何判斷檔案是否存在包括本地遠端檔案

當檢查的檔案是本地時用php自帶的file_exists檢查就行了,而此函式只能檢查本地的函式是否存在, 所以如果要檢查遠端的檔案是否存在只能用其它的方法了。 如果所伺服器中php的配置開啟了“allow_url_fopen = On”,即允許遠端訪問,那麼也很簡單,其實這

php判斷本地遠端檔案是否存在

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

利用curl下載檔案包括GetPost

#define STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES         60000000000 #define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL     3 &n

用eclipse生成maven專案本地生成.git檔案,把倉庫檔案推送到gitlub遠端

1. 滑鼠右擊專案名---Team---share project 2.出現share project---Git---next 3.勾上use or create repository in parent folder of project---單擊create reposit

python 使用 urllib.urlretrieve()下載網路圖片本地開啟提示檔案損壞無法開啟

程式碼如下: url = ‘http://www.xiaohuar.com/d/file/20170318/a5e3460073df58ed208ae3ec2ff46d07.jpg’ path_name ='xx' urllib.urlretrieve(url, 'D:\i

判斷使用者許可權後如何高效的提供檔案下載

問題:某些檔案只希望特定使用者可以下載,那麼下載之前必須進行許可權判斷。判斷通過時,跳轉到被下載檔案的真實地址肯定不行,這相當於沒有做許可權限制了。一般的做法是讀取被下載的檔案然後輸出給使用者。在這個過程中動態語言幹了一件吃力不討好的事情,轉了一個彎讀取資料然後在交給web

判斷String是否為數值包括小數負數

public static void main(String[] args) { Boolean strResult = "100".matches("-[0-9]+(.[0-9]+)?|[0-9]+(.[0-9]+)?"); if(strResult == t

PHP判斷SSL是否啟用也就是判斷HTTPS

/* * 檢測連結是否是SSL連線 * @return bool */ function is_SSL(){ if(!isset($_SERVER['HTTPS'])) return FALSE; if($_SERVER['HTTPS'] === 1){ //Apach

後臺發送http請求通用方法包括getpost

util line 通用方法 返回 finall 6.0 val except ktr package com.examsafety.service.sh; import java.io.BufferedReader; import java.io.IOExceptio

寄存器cache的區別與聯系

拷貝 技巧 line 一段時間 arc 但是 nbsp 貴的 硬盤 1. 寄存器是中央處理器內的組成部份。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和位址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器(PC)。在中央處理器的算術及

iOS 使用QLPreviewController預覽本地網路檔案

最近在專案中要做一個文件預覽的功能,做的時候用到了iOS原生的QLPreviewController類,在此做個記錄分享 首先引入標頭檔案 #import <QuickLook/QuickLook.h> 遵循代理 QLPreviewControllerDa

編寫一個檔案分割工具能把一個大檔案分割成多個小的檔案。並且能再次把它們合併起來得到完整的檔案

package wenjianyuliu;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io

編寫一個檔案分割工具能把一個大檔案分割成多個小的檔案。並且能再次把他們合併起來得到完整的檔案

package wenjian; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java

MongoDB匯入資料資料夾(包括bsonjson檔案)報錯

MongoDB匯入資料報錯 很多部落格都說在linux下 使用 mongorestore -d db_name 資料夾目錄 就可以匯入資料夾中的內容 記錄一個傻瓜錯誤: mongorestore是一個獨立可執行程式 這個命令不能放在mongo shell裡執行 應該

vue實際專案開發中公共js(全域性引入)檔案如何寫如何引入到入口檔案main.js

公共js檔案,比如commen.js通過export default暴露出來export default { install(Vue,options){  Vue.prototype.方法名=function(){}}在入口檔案main.js引入import comm form './assets/js/c

C#開發的定時自動拷貝檔案到別處並刪除過期備份檔案支援網路上的芳鄰拷貝

開發工具VS2013  .net 框架 2.0 SQL server的備份檔案只可以備份在本機,只有一份,這個軟體可以定時把備份檔案拷貝到別的機器,作為另外的備份,還可以在成功備份後自動刪除過期的檔案,沒有成功備份,不刪除過期檔案,以免誤刪,除非手動刪除。 拷貝檔案過程中沒有進度條

Android 實現PDF檔案的檢視(本地網路檔案

PDF檔案大家應該不陌生,說的簡單點,其實我認為就是一個全圖片的Word,裡面的每個頁面都可以看做是一張帶文字的圖片,接下來我們看看在Android應用裡如何讀取和檢視PDF檔案內容。 1 在專案的gradle中增加如下程式碼: compile 'com.joanzapa

Android客戶端使用OkGo上傳檔案或者圖片客戶端服務端程式碼分享

(一)上傳單個檔案或者圖片: 客戶端程式碼: /** * 儲存資料到伺服器 */ private void saveToInternet() { //上傳單個檔案 String url = Constants.USER_NET_ICON;   Fi

axios服務封裝可用於任何支援axios的專案中包括reactvue都可通用。get/post請求以及併發請求。以及導航欄隨意切換測試/正式環境

任何專案,只要支援axios,那麼你只要把我現在封裝的服務整個資料夾考過去即可。這個原本是我封裝在vue裡的,但是有一天公司突然來一個緊急的H5微信分享活動的專案,我當時用react搭建(zepto+node搭建其實最好)也是為了挑戰一下自己,畢竟只有三天時間。所以當我把很多vue裡封裝的東西直

Bitcoin Unlimited釋出BCH新版客戶端1.5.0.0包括CTORCDSV

006YQfwzly1fw8yey3p00j30oo0dwnd0.jpg 對於比特幣現金11月份的網路升級,BCH社群存在一定的分歧,爭論主要集中在Bitcoin ABC開發團隊提出的更改內容交易規範排序(CTOR)和引入新的OP-Code程式碼OP_CHECK