-2

可能重复:
如何允许用户选择上传文件的位置?

我想让我的用户选择上传文件的位置。如果有人可以帮助我,那就太好了。

uploader.html http://pastebin.com/LQP9jxLH

<div id="main">
<center><h2>File Uploader Beta</h2></center><br />
<center>
<form action="upload.php" method="post" enctype="multipart/form-data">
File: <input type="file" name="filename" />
<input type="submit" value="Upload" />
</form>
</center>
</div>

上传.php http://pastebin.com/CtM1LW13

$folder = "files/";
$HTTP_POST_FILES = "";
if(isset($_FILES['filename']['tmp_name'])) // Check if $_FILES['filename']['tmp_name'] is there
{
        if (is_uploaded_file($_FILES['filename']['tmp_name']))  {  
                if (move_uploaded_file($_FILES['filename']['tmp_name'], $folder.$_FILES['filename']['name'])) {
                        Echo "Your file has been uploaded! You should probably tell Cody what you uploaded so he can get it in the right place. :)";
                } else {
                        Echo "Haha! You don't have access to do that.";
        }
        } else {
                Echo "Your upload has failed.";
        }
}

感谢所有帮助。:)

此外,一旦文件上传,我需要它在页面中生成一个脚本。假设 example.jpg 被上传到 /Cody/Pictures。它会删除

没有找到文件。。

并将其替换为: 文件名:$FileName 下载:

任何人都可以这样做吗?可以的话谢谢!

4

2 回答 2

1

我这样做只是因为你看起来很年轻:

我会在path您的上传表单中添加一个包含名为(作为其名称属性)的上传路径的字段,上传路径可以简单地输入或使用文件夹选择器进行选择:您可以遍历上传目录的顶层($folder)使用PHP 函数scandir( $files=scandir($folder);)。这会提供一个包含所有文件和文件夹的列表$folder。(假设它包含文件夹foo和文件index.html)。此时,您迭代-function$files传递的 list()并检查当前项目是否是使用.scandiris_dir

function listFiles($directory)
{
    $files=scandir($directory);
    for($i=0; $i < count($files); $i++)
    {
        if(is_dir($files[$i]) && file_exists($files[$i]))
        {
            echo '<a href="javascript:getFolderContents('.json_encode($files[$i]).');">'.htmlentities($files[$i]).'</a>';
        }
    }
}
echo '<div id="uploadcontainer">';
listFiles($folder); //you must have declared $folder
echo '</div>';

如果是这样,您可以生成一个动态超链接,它执行一个动态 JavaScript 函数。对于您的最高级别,您将收到一个链接,例如:

<a href="javascript:getFolderContents('foo');">foo</a>`

当然,您需要定义函数 getFolderContents,它是一个 JavaScript 函数,它使用 JSON 或 Ajax 传递其参数的文件夹内容。

function getFolderContents(folder)
{
    Request=new XMLHttpRequest();
    Request.open("GET", "/getFolderContents.php?folder="+encodeURIComponent(folder), true);
    Request.onreadystatechange=function()
    {
        if(Request.readyState==4 && Request.status==200) //succeeded
        {
            document.getElementsByName("path")[0].value=folder+"/";
            document.getElementById("uploadcontainer").innerHTML=Request.responseText;
        }
    }
    Request.send(null);
}

当这个请求被发送给你时,/getFolderContents.php你需要创建这个 PHP 文件并简单地复制函数listFiles(如上所示)并执行以下代码:

listFiles($_GET["folder"]);

我没有测试过,只是写得很快,当然你已经适应了你的需要。并且仍然缺少一些选项,例如再次向上移动一个目录左右,因为此脚本不允许您返回。

来自德国的问候。

于 2012-07-14T14:12:02.180 回答
0

您需要修改表单 - 例如

<form action="upload.php" method="post" enctype="multipart/form-data">
File: <input type="file" name="filename" /><br />
Directory: <select name="folder">
<option>Bob</option>
<option>Cody</option>
</select>
<input type="submit" value="Upload" />
</form>

和upload.php文件

换行:$folder = "files/";

$folder = $_POST[folder]."/";

确保您已经创建了 Bob 和 Cody 目录。

那应该让你开始。

尝试使用 CSS 研究样式

<style>
.someclass{
  color:#FFF;
  font-weight:700;
}
</style>

<div class="someclass">White bold text</div>
<div class="someclass">Also White bold text</div>

我知道你只有 13 岁,所以坚持下去:)

于 2012-07-14T14:09:15.427 回答