使用HTML表单/ PHP脚本上传文件夹是否可行?

15

我正在开发一个网站,其中需要上传多张图片,我正在尝试不同的方式来实现这个功能。目前我有一个PHP脚本,可以从给定的文件夹获取并显示图像,如下所示:

<?php
$dirname = "content/2014/February/";
$images = glob($dirname."*.*");
foreach($images as $image) {
echo '<img src="'.$image.'" /><br />';
}
?>

这个工作很好,我可以使用CSS格式化<img>并应用jQuery进行画廊,但是,我如何使用php和html表单首先上传图像文件夹?


1
可能是如何使用PHP上传文件夹?的重复问题。 - Jonathan Hall
6个回答

30

现在可以上传文件夹了。按照下面的代码即可完成上传:

```html 请插入原始代码 ```

  <input type="file" webkitdirectory mozdirectory />

您可以在此处查看演示:https://jsfiddle.net/kevalpadia/vk6Ldzae/

希望它能帮助您解决问题。


3

<input type="file" webkitdirectory="" directory="" /> - 这只在一些现代浏览器中有效,比如Edge或者使用Webkit引擎的Chrome。我认为Firefox不支持这种方式。


5
自火狐浏览器版本50.0起,它已经正式支持此功能,并且微软Edge浏览器也是如此。只是以防有人在寻找的时候。 - Wdy Dev

2

谢谢提供的信息。Uploadify的问题在于它仅限非商业使用,而且我发现在我的XP机器上使用Chrome会导致蓝屏。我需要考虑另一种解决方法。 - user3177012
@user3177012,蓝屏问题总是操作系统问题(操作系统、驱动程序等)。Chrome或任何应用程序可能会崩溃,您的操作系统可能会给出错误消息、警告、事件日志或其他信息,但崩溃不是可接受的选项,这是操作系统或驱动程序的错误。 - ymajoros
哪一个是当前的答案?!?没有被接受。 - Deanie

1
是的,这是可能的。 以下是代码:
<form method="post" enctype="multipart/form-data" action="#">
        Folder Name: <input type="text" name="foldername" /><br/>
        Choose Directoryy:  <input type="file" name="files[]" id="files" multiple directory="" webkitdirectory="" mozdirectory=""><br/>
    <input class="button" type="submit" value="Upload" name="upload" />
</form>

<?php

if(isset($_POST['upload']))
{
        if($_POST['foldername']!="")
        {
                $foldername=$_POST['foldername'];
                if(!is_dir($foldername))
                        mkdir($foldername);
                foreach($_FILES['files']['name'] as $i=>$name)
                {
                        if(strlen($_FILES['files']['name'][$i]) > 1)
                        {
                                move_uploaded_file($_FILES['files']['tmp_name'][$i],$foldername.'/'.$name);
                        }
                }
                echo "Folder is uploaded successfully ..";
        }
        else
        echo "Folder uploaded Failed!!";
}
?>

1

1
这不允许用户上传文件夹,只能上传多个文件。 - Stack

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接