上传文件夹php

时间:2011-07-11 16:33:05

标签: php copy directory

让我们说我有一个文件夹,里面有大约五十张我拍摄的照片,我想把它们全部上传到我的网站。因此,我不必选择每一个并上传它,而是可以上传它们所在的文件夹。但是,由于浏览器不允许您选择文件夹,我知道我可以制作它以便您复制并粘贴该文件夹的路径,但那将是丑陋,hackish和复杂。是否有更好的方法来上传文件夹而不必这样做?如果我必须这样做,copy()会在文件夹上工作还是我必须使用递归循环从该文件夹及其中的任何文件夹中获取所有图片?

6 个答案:

答案 0 :(得分:3)

您应该将multiple属性添加到input:file元素。这样,您可以通过单个input:file字段选择任意数量的文件。

答案 1 :(得分:2)

PHP本身无法处理此类任务,因为它必须依赖HTML接口与客户端进行通信。如果您使用的是HTML5,或者您的客户使用具有相应支持的浏览器,则可以使用文件input元素的multiple属性来处理此任务。

对于HTML5之前的HTML版本,您需要添加一个可以处理多个文件上传的工具,例如SWFUpload(Flash),jUpload(Java小程序)或{{3 (jQuery)。

答案 2 :(得分:0)

简单地说:仅使用html表单是不可能的。只需将它们压缩并在服务器端解压缩即可。

答案 3 :(得分:0)

在HTML5浏览器占领世界之前,或者您使用基于Flash或Java的客户端解决方案,您只能为每个文件提供<input type="file" ...>上传多个文件的唯一方法上传。

允许从浏览器上传文件是一个主要的安全风险,因此文件输入是浏览器中最受监管/监管的元素之一 - 允许任何类型的可编程性打开通向能够吸取任何文件的漏洞(s )攻击想要从客户端机器。

答案 4 :(得分:0)

我为我的妻子网站http://www.beccablake.com执行此操作。她也是一名摄影师。我创建了一个自定义模块(她使用drupal作为CMS)来上传包含所有图片的zip文件。上传后,我解压缩zip并遍历所有文件并为每个文件创建新节点。以下是该模块的一段代码,可以帮助您做您想做的事。

<?php
$file = 'path/to/zip/pictures.zip';
$dest = 'path/to/pictures/directory';
exec('unzip "'. $file .'" -d '. $dest);
// If you need to do something with each file (like I do)
$files = scandir($dest);
?>

这假设您可以在服务器上执行'exec'解压缩。我的代码有很多不同,因为我在Drupal中更多地使用图片,我创建了一个校对库,每张图片都是自己的节点,因此用户可以评论/评价/喜欢这些照片......等等。

祝你好运!

答案 5 :(得分:0)

浏览器永远不会传输有关客户端目录结构的任何信息,因此就目录而言,无法实现这样的通用解决方案。您可以希望的是,客户端将提供一个工具来将用户的目录选择转换为包含文件的列表,但无论如何,这对您在服务器端无关紧要。