2009-11-19 139 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