可能重复:
How do I allow users to chose where to upload the file?
我想让我的用户选择上传文件的位置。如果有人能帮助我,那就太好了。
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>
upload.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。 它会删除
任何人都可以这样做吗?谢谢,如果可以的话!
答案 0 :(得分:1)
我这样做是因为你似乎很年轻:
我会在上传表单中添加一个包含名为path
的上传路径(作为其名称属性)的字段,只需输入或使用文件夹选择器选择上传路径:您可以遍历顶部使用PHP函数$folder
(scandir
)上传目录($files=scandir($folder);
)的级别。这会在$folder
中提供所有文件和文件夹的列表。 (我们假设它包含文件夹foo
和文件index.html
)。此时,您将迭代$files
- 函数提供的列表(scandir
),并使用is_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"]);
我没有测试过,只是快速编写,当然你已经根据自己的需要进行了调整。还有一些选项缺失,比如再次移动一个目录,因为这个脚本不允许你回来。
来自德国的致敬。
答案 1 :(得分: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>
上传.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岁,所以坚持下去:)