2009-11-19 138 views
0

我在PHP中遇到問題。我正在使用<input type=file>從用戶獲取文件名。 基本上我想存儲剛纔的文件夾路徑而不是文件,所以當我使用超鏈接顯示路徑時,用戶可以打開目錄。使用輸入類型文件選擇文件夾路徑

但使用<input type=file>用戶必須選擇一個文件,然後只有文件文本框將被填充。現在我想剝離文件名的最後部分。

我該怎麼做?還是有更好的方法來解決這個問題?

編輯:

我使用這樣的事情在說一個名爲1.HTML文件:現在

<form method="post" action="update.php"> 
    <input type="file" name="attachment" id="attachment"></td> </tr> 
</form> 

,在update.php我使用的是這樣的:

$logpath1=$_POST['attachment']; 

基本上我正在獲取用戶選擇的$ logpath1中的文件名。 但是,輸入類型=文件只適用於文件而不適用於文件夾。

那麼,如何從路徑中去除文件名呢?

示例:如果用戶選擇,

C:\Documents and Settings\myusee\Desktop\new 2.cpp 

欲剝離new 2.cpp

我不知道如何使用爆炸。此外,我正在運行XAMPP Lite

+6

杜佩:http://stackoverflow.com/questions/1676035/cant-get-the-complete-address-while-uploading-a-file(你不能 - 文件輸入是有上傳文件,而不是信息有關訪問者的文件系統) – Quentin

+0

我不採取有關文件系統。我只是使用用戶選擇的文件名。 – JPro

+1

路徑名是關於文件系統的結構信息。 – falstro

回答

2

你可以用另一種方式做到這一點,把一個隱藏的字段<input type="hidden" id="something" name="something" />,並使用jQuery(JavaScript)來選擇文件輸入框的值,並在提交之前將其放入隱藏字段中,提交後您將有一個完整的路徑,我不知道它是否有效,但值得一試。

0

出於安全原因,大多數瀏覽器都禁止訪問路徑信息(或文件輸入框的任何其他部分)。使用正常的文件輸入,這是不能完成的。 也許像swfbox這樣的基於Flash的上傳插件之一允許預設目錄。

0

1)ANY有關客戶端文件結構目錄路徑的信息存在安全風險。 POST提交,JavaScript,Flash,Java應用程序或任何其他基於Web的方法都有能力做到這一點。我懷疑Firefox,Internet Explorer,Safari,Opera或任何其他瀏覽器會允許你這樣做。如果找到了一種方法 - 稍後的版本很可能會修補此漏洞,並且您的代碼將變得毫無用處。

2)如果您想改爲顯示服務器目錄的目錄,則可以使用此PHP代碼獲取存儲上載文件的臨時目錄的完整路徑。

$temp_path=$_FILES['attachment']['tmp_name']; 

然而,這將是您的SERVER安全風險。另外,臨時路徑通常被拒絕訪問網絡。通常,只有PHP解釋器才能訪問它。

通常情況下,一旦文件上傳,如果它是有效的,它可以移動這樣:

move_uploaded_file($_FILES['attachment']['tmp_name'], $the_directory_i_want); 

但由於$the_directory_i_want是一個變量集,你就已經知道這一點。

這有點聽起來像你要使用WAMP和PHP作爲某種形式的本地文件工具。如果是這樣的話,PHP可能不是一個好的解決方案。有時,您可能想看看創造一個.HTA application