1. php獲取打開的文件的路徑
1. 由於瀏覽器的限制,通常傳遞時只會看到文件名,而不會看到完整的路徑。
2. 如果想達到你的目的,以下是建議的示例辦法:
(1) test.html
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="post" action="open2.php" enctype="multipart/form-data">
<input id="mytxt" type="file" name="file" />
<input type="submit" name="Submit" value="打開" />
</form>
</body>
</html>
(2) open2.php
<?php
echo file_get_contents($_FILES['file']['tmp_name']);
?>
提示兩點:
1. 注意文件的編碼,比如,如果TXT是ansi,則編碼格式想與之相對應。
2. 注意安全,比如檢查下 file 里是不是純文本,並盡量進行安全編碼。
2. php 獲取file選擇的文件路徑
#接收表單提交變數
$file=$_FILES['BtnPic'];
//print_r($_FILES);PRINT_R($file);
//PRINT_R($file);
//判斷文件是否上傳成功
if(is_uploaded_file($file['tmp_name'])){
//apache文件上傳時臨時儲存路徑,移動到自定義路徑
$upload_file=$file['tmp_name'];
//print_r($upload_file);
$uploadpath=$_SERVER['DOCUMENT_ROOT']."/UploadFile/naotu/";//這塊要注意一下路徑
//下面是你伺服器儲存文件的路徑,可以自定義
$move_to_file=$uploadpath.$file['name'];
//判斷是否移動成功
if(!is_dir($uploadpath)){
mkdir($uploadpath,0777,true);
}
if(move_uploaded_file($upload_file,$move_to_file)){
echo"上傳文件成功";
}else{
echo"上傳失敗";
}
}else{
echo"上傳失敗..請檢查伺服器。";
}
3. 如何找出PHP配置文件php.ini的路徑
直接在電腦里搜索:php.ini;就可以看見路徑;例如下面搜到的:路徑為:F:/xampp/php/php.ini
4. php中怎麼從路徑中取出文件名
1、basename("/mnt/img/image01.jpg")函數:得到文件名;輸出結果為:image01.jpg.
使用 basename($uriString) 我們可以得到一個包含擴展名的文件名;
如果不需要擴展名,也可以使用 basename($uriString, $extString) 過濾擴展名,僅僅返迴文件名。
2、echo __FILE__;得到當前請求文件的完整路徑,輸出格式如:/mnt/hgfs/ictsapce/test/index.php
3、dirname() 函數返迴路徑中的目錄部分。
如:
echo dirname("/testweb/home.php");
輸出:/testweb
5. php返回當前php文件的上級目錄名稱,不是路徑!
//我個人不清楚是否有直接獲得文件當前所在文件夾名稱的函數,都是處理的
$arr = explode(DIRECTORY_SEPARATOR,dirname(__FILE__));
echoend($arr);
6. PHP中的文件系統函數(一)
從這篇文章開始,我們將學習一系列的 PHP 文件系統相關函數。其實這些函數中,有很多都是我們經常用到的,大家並不需要刻意地去記住它們,只要知道有這么個東西,在使用的時候記得來查文檔就可以了。
文件路徑相關的函數往往在一些框架中會比較常見,而且多會配合 __FILE__ 、 __DIR__ 之類的魔術常量使用。
basename() 函數是獲得路徑中的文件名,它有兩個參數,第一個是文件的路徑,第二個是過濾掉的內容,比如第一條測試語句我們過濾掉文件的後綴名。
dirname() 返回的是路徑中的路徑部分,也就是不包含文件名的那部分內容,和 basename() 正好是相反的功能。
pathinfo() 函數用於以數組的形式返迴路徑中的信息,從結果來看,我們可以看到文件的 dirname 部分,basename 部分,以及文件的擴展名 extension 和不包含擴展名的 filename 內容。
realpath() 返回的是規范化的絕對路徑名,它擴展所有的符號連接並且處理輸入的路徑中的 ./ 、 ../ 以及多餘的 / ,返回的內容是標准規范的絕對路徑。
接下來,我們學習一些修改文件相關屬性的函數,主要就是在 Linux 系統環境中的文件許可權信息的操作。
當然,首先我們得創建一個文件。和 Linux 中的命令是非常類似的。
touch() 函數除了給出要創建的文件名之外,還有兩個可選參數可以指定文件的創建時間及訪問時間,不給參數的話默認就是當前時間。這個文件名可以是相對或絕對路徑中有許可權的目錄,並在該目錄下創建一個空的文件。
通過 fileowner() 函數,我們可以獲得某個文件所屬的用戶,默認情況下我們的用戶是當前運行 PHP 腳本的用戶,也就是系統目前的登錄用戶。在這里,我們使用 chown() 函數,將用戶改為 www 用戶。clearstatcache() 是用於清理文件系統的緩存信息,如果不清理一下的話,fileowner() 返回的依然還是之前的用戶信息。
同理,使用 filegroup() 函數獲得文件的屬組信息,chgrp() 用於修改文件的屬組。fileperms() 用於返迴文件的許可權信息,它返回的是數字模式的文件訪問許可權,這里我們使用 sprintf() 格式化結果後獲得我們常用的 Linux 系統許可權格式。chmod() 函數用於修改文件的許可權,它的許可權參數是三個 8 進制數據組成的數字,也就是代表 Linux 系統中的 1 、2 、4 和它們的組合,所以我們需要在前面再加上一個 0 用於確保操作能夠正常執行。關於系統文件許可權的知識大家需要認真學習 Linux 系統中相關的內容。
注意,上述函數如果在命令行中運行失敗,大部分原因是沒有許可權,可以使用 sudo 進行測試。在 fastcgi 中運行時,就更加需要注意許可權問題,僅在我們伺服器可以操作的目錄中進行安全的文件許可權修改。
stat() 函數可以獲取到指定文件的所有屬性信息,在這里我們可以看到文件的 uid 、 gid 、 ctime 、 mtime 等信息。
在 Linux 系統中,有軟連接和硬連接的相關知識。其實軟連接就像是 Windows 中的快捷方式,而硬連接相關於復制了一份數據。在 PHP 中,也為我們提供了創建軟硬連接以及相關的一些操作。
使用 link() 函數創建的就是一個指定文件的硬連接文件,而使用 symlink() 創建的則是一個軟連接文件。相對來說,我們使用軟連接的場景會更多一些。lstat() 就和 stat() 函數的功能一樣,查看文件的各種屬性信息,不過 lstat() 函數針對的是軟硬連接文件。
同樣地,我們也可以修改軟硬連接的用戶和用戶組信息,不過它們的信息不能通過 fileowner() 或 filegroup() 查看。因為它們是連接文件,本身還是和原始文件綁定在一起的,使用 fileowner() 這類的函數查看到的依然是原始文件的信息。我們可以在系統環境中使用 ls -l 查看連接文件的用戶和用戶組信息是否修改成功。
今天的內容比較簡單,而且修改許可權的操作也並不常用。不過對於系統安全來,它們還是非常有用的,比如對於上傳來說,我們要預防上傳可執行文件的話,就可以通過修改文件的許可權來讓文件無法直接運行,從而起到安全保護的作用。另外,目錄路徑相關的操作也是一些框架的基礎,幾乎所有框架的入口或者說是 Composer 的入口,都會見到 dirname() 以及 basename() 之類函數的身影。
測試代碼:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/6.PHP中的文件系統函數(一).php
參考文檔:
https://www.php.net/manual/zh/ref.filesystem.php
7. php 怎樣獲取文本內容中的圖片和文件路徑
$str='<imgsrc="http://localhost/2.jpg"alt=""/><imgsrc="http://localhost/2.jpg"alt=""/><imgsrc="http://localhost/2.jpg"alt=""/><ahref="http://www.,com/">aaa</a>';
$str=strip_tags($str,'<img>');
preg_match_all('/<imgs+src="([w:/.]+)"/',$str,$matches);
//var_mp($matches[1]);
$match=$matches[1];
foreach($matchas$value){
echo$value."<br>";
}
8. php 有取得某一文件的路徑的函數嗎 比如我有個文件test.txt,我想返回它所在的文件夾,怎麼做到
dirname — 返迴路徑中的目錄部分
basename — 返迴路徑中的文件名部分
以上兩個可以獲取目錄或文件部分。下面一個較為強大。
pathinfo — 返迴文件路徑的信息
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n";
?>
會輸出
/www/htdocs/inc
lib.inc.php
php
lib.inc
9. 求教,php 如何獲取文件的下載路徑
哎,本不想回復的,但是怕其它人回復誤人子弟,還是說兩句吧。
你的PHP程序是在WEB伺服器上運行,運行完畢後生成的文件類型,再通過網路傳送到瀏覽器電腦上,然後這個電腦的人員再選擇保存文件路徑,你說這個人選擇保存路徑的時候你的PHP程序可能知道嗎,那個PHP早就運行結束了。
你所有的那些Header都是伺服器傳送給瀏覽器的,瀏覽器要把信息傳送回伺服器只有通過GET、POST調用伺服器,顯然選擇路徑保存文件的動作不會觸發上傳動作。
綜上所述,你是無法通過PHP程序獲得用戶的保存文件夾的。
要獲得用戶保存的文件夾,除非你自己編寫瀏覽器代碼,在選擇保存路徑後再傳送給伺服器,這種可能性幾乎為0。
10. php獲取上級文件絕對路徑
PHP獲取文件絕對路徑,參考方法如下:
<?php
echo __FILE__ ; // 取得當前文件的絕對地址,結果:D:\www\test.php
echo dirname(__FILE__); // 取得當前文件所在的絕對目錄,結果:D:\www\
echo dirname(dirname(__FILE__)); //取得當前文件的上一層目錄名,結果:D:\
?>
chdir() 函數把當前的目錄改變為指定的目錄。
若成功,則該函數返回 true,否則返回 false。
語法 :
chdir(directory)參數 描述
directory 必需。規定新的當前目錄。