【问题标题】:I have to fill an array with filenames, in angularjs我必须在 angularjs 中用文件名填充一个数组
【发布时间】:2015-11-10 17:02:45
【问题描述】:

我必须用文件名填充一个数组。这是一个本地文件夹,里面有很多文件,我需要文件名“进入”数组。 文件名 [0] = 澳大利亚.jpg 文件名[1] = italy.jpg 等等。

有什么想法吗?

谢谢。

我试过了,但它不起作用:

 var getFilesNames = function(){
      var folderPath = Folder ("C:\Users\Giulio\Desktop");
      var toteTempFiles = toteTempPath.getFiles();
      var namesArr = [];
      for(var i=0; i<toteTempFiles.length; i++){
        var thisFile = toteTempFiles[i];
        myNames.push(thisFile.name);
      }
    }

【问题讨论】:

  • 你尝试过什么吗?你能显示一些代码吗?
  • "请给我密码 ^_^"
  • 我尝试了一些在网上找到的代码,但没有。
  • 不,我想要解释代码,我是学生,我在google上搜索过,但是有人说JavaScript不能这样做,所以我想知道它是否属实。
  • 怎么不工作了? 'toteTempPath' 似乎未声明应该引发异常。

标签: javascript arrays angularjs string filenames


【解决方案1】:

据我所知,不可能窥探用户文件系统,这将是一个相当大的安全问题。

但是,使用新的文件 API,用户可以授予您对某些文件的访问权限,让您可以获取有关这些文件的信息并上传它们。但是,这确实需要用户执行操作。

所以稍微改变你的要求,你可以这样做:

<input type="file" id="input" multiple />

还有 JS

var inputElement = document.getElementById("input");
inputElement.addEventListener("change", handleFiles, false);

function handleFiles() {
    var fileList = [];

    for(var i = 0; i < this.files.length; i++) {
        fileList.push(this.files[i].name);   
    }

    console.log(fileList);
}

基本上你有一个用户与之交互的输入。当其值更改时,选择了一些文件,onchange 处理程序将触发,为您提供有关所选文件的信息。

重要的是要注意this.files 不是一个数组,而是一个类似数组的对象,就像arguments 变量一样。所以你不能map或者forEach就可以了。

因此,在您的使用中,用户必须选择您需要的文件夹中的所有文件,这会稍有变化。然后,您可以继续获取所需的所有信息。

这是一个小提琴:http://jsfiddle.net/q97dgjso/

还有一些可以帮助你的资源:@​​987654322@ https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications https://developer.mozilla.org/en/docs/Web/API/File

【讨论】:

  • 谢谢你!它有效,我不知道是否可能,但我想设置一个默认目录并自动选择里面的每个文件,你知道是否可能?无论如何我要研究 FIle API,非常感谢!
  • @Giulio 正如我所说,我认为这是不可能的,如果是这样,那将是一个巨大的安全风险。您是否希望网站能够从文件系统中的某个位置随机选择文件?
猜你喜欢
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2015-04-03
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
相关资源
最近更新 更多