我有一个放置区域,我想检测被拖动的项目是文件夹还是文件.在chrome中我通过使用实现了这一点
for (var i = 0; i < nrOfFiles; i++) {
var entry = e.originalEvent.dataTransfer.items[i].webkitGetAsEntry();
if (entry.isDirectory) {
//folder detection
}
Run Code Online (Sandbox Code Playgroud)
在Firefox中,无法使用上述解决方案(webkit),在花了很多时间试图解决这个问题后,我想出了以下解决方案(并且失败了)
我检查拖动的项目是否没有类型和大小,如下所示,并且在大多数情况下它按预期工作.从我所看到的这个效率并不高,因为有些文件可能没有文件扩展名,所以我尝试用FileReader API读取文件为二进制字符串(readAsBinaryString)或readAsArrayBuffer,并在项目为的情况下捕获异常不可读,但永远不会抛出异常.
var files = e.originalEvent.dataTransfer.files;
for (var i = 0; i < nrOfFiles; i++) {
if (files[i].size === 0 && files[i].type==="") {
try{
var reader = new FileReader();
reader.readAsBinaryString(files[i]);
}catch(e){
//folder detection ?
}
}}
Run Code Online (Sandbox Code Playgroud)在下面的解决方案中,我正在尝试使用mozGetDataAt,这是相应的webkitGetAsEntry(???不是100%关于这个请纠正我,如果我错了)但我得到一个安全例外.
var entry = e.originalEvent.dataTransfer.mozGetDataAt("application/x-moz-file",i);
if (entry.isDirectory) { //not even reaching this statement. idk if isDirectory is applicable to entry
//folder detection? …Run Code Online (Sandbox Code Playgroud)我希望能够让用户上传一个包含所有文件和文件夹的文件夹,并仅使用浏览器将层次结构保留到我的 Web 应用程序中。
我已经搜索过但没有找到如何做到这一点。每个人都说这是浏览器的问题,我相信这是因为没有浏览器标准可以做到这一点。
我发现并使用了许多上传文件的 javascript 实现。当我将文件夹拖到它们上面时,我可以获得所有文件的列表,但是文件夹和层次结构都消失了。如果我使用打开对话框的那些来查找文件,则它们都不允许选择文件夹。
那么 Dropbox 是如何做到的呢?
我可以将整个文件夹拖到 Chrome 或 Safari(在我的 Mac 上)上,它们都会上传文件夹和文件并在 Dropbox 中保留层次结构。
没有人知道他们是如何做到这一点的,这样我就可以在我自己的基于浏览器的网络应用程序上做同样的事情吗?
我们使用 jquery fileupload 将文件(和文件夹)从本地计算机拖放到浏览器。这很好用,但我们无法捕获文件夹内文件的目录结构。我理解为什么(从安全角度和 JavaScript 角度来看)这不起作用,但是有人对实现相同目标的最佳方法有任何想法吗?
再次,我希望我的客户(内部应用程序)将文件夹拖放到我的应用程序中。我的应用程序可以看到文件名列表并上传它们,但我想保留这些文件的目录结构以供在其他地方使用。即,对我来说重要的是知道它来自目录 x/1/a 而不是 y/2/b。
提前致谢!
javascript jquery file-upload javascript-security jquery-file-upload
我正在开发一个网站,其中多个图像上传到网站,我正在玩这种方法可以做到这一点.目前我有一个PHP脚本,它将获取和显示给定文件夹中的图像,如下所示:
<?php
$dirname = "content/2014/February/";
$images = glob($dirname."*.*");
foreach($images as $image) {
echo '<img src="'.$image.'" /><br />';
}
?>
Run Code Online (Sandbox Code Playgroud)
这工作正常,我可以格式化<img>使用CSS并为画廊应用jquery,但是,我怎么能首先使用php和html表格上传图像文件夹?