我正在使用HTML5构建一个拖放到上传的Web应用程序,我正在将文件放到div上,当然还要获取dataTransfer对象,它给了我FileList.
现在我想删除一些文件,但我不知道如何,或者甚至可能.
我最好只想从FileList中删除它们; 我对他们毫无用处.但是如果那是不可能的,那么我是否应该在代码中写入与FileList交互的代码?这似乎很麻烦.
可以将元素的.files
属性设置为例如来自不同的元素属性或属性.请参阅Make .files settable#2866,将文件上传到HTML表单并提交之间会发生什么?.<input type="file">
FileList
<input type="file">
.files
DataTransfer.files
FileList
对象有一个Symbol.iterator
属性,我们可以使用它来设置一个File
可迭代的对象,但是.files
.length
仍然设置为0
并传递一个<form>
有<input type="file">
用于.files
使用上述方法设置的集合,产生一个设置为的File
对象..size
0
如何设置File
at FileList
和set设置.length
的FileList
文件数,文件在FormData()
object 设置的位置?
const input = document.createElement("input");
const form = document.createElement("form");
const [...data] = [
new File(["a"], "a.txt")
, new File(["b"], "b.txt")
];
input.type = "file";
input.name = "files";
input.multiple = true;
// …
Run Code Online (Sandbox Code Playgroud)我正在使用python-fabric库构建一个远程服务器管理工具,并且正在寻找一种检索远程服务器上目录的文件列表的好方法.目前我正在使用run("ls dir")并且手动拆分返回字符串,这看起来很可怕并且非常依赖于体系结构.fabric.contrib.files似乎不包含任何使用..
建议非常感谢.
干杯,R
我最近为Moodle贡献了一些代码,它使用HTML5的一些功能,允许通过桌面拖放将文件上传到表单中(代码的核心部分在这里:https://github.com/moodle /moodle/blob/master/lib/form/dndupload.js供参考).
这种运作良好,除了当用户进行拖拽一个文件夹/目录,而不是一个真正的文件.然后将垃圾上传到服务器,但文件名与文件夹匹配.
我所寻找的是一个简单而可靠的方法检测一个存在的文件夹中的文件清单对象,这样我就可以跳过它(并可能返回一个友好的错误消息为好).
我查看了MDN上的文档,以及更一般的网络搜索,但没有透露任何内容.我还查看了Chrome开发人员工具中的数据,看来文件对象的"类型"始终设置为""用于文件夹.但是,我不太相信这是最可靠的跨浏览器检测方法.
有没有人有更好的建议?
我正在使用文件选择输入来上传多个文件。用户选择文件后,我会循环排序FileList
以检查是否有任何 HEIC/HEIF 文件,以便显示错误消息。
const fileSelect = document.createElement("input");
fileSelect.setAttribute("type", "file");
fileSelect.setAttribute("multiple", "multiple");
fileSelect.click();
Run Code Online (Sandbox Code Playgroud)
if(!this.vm.acceptedTypes.includes(file.type)) {
console.log(file);
this._$inj.globalFac.showAlert(file.name, `Error: File type ${file.type} is not supported.`);
continue;
}
Run Code Online (Sandbox Code Playgroud)
但是,当用户上传 HEIC/HEIF 文件时,该type
属性为空。为什么?
我有一个目标,build.xml
它创建一个Zip文件.为了避免在没有更新文件的情况下创建Zip,我想事先检查更新.AFAIK,uptodate
是使用的任务.
以下是相关(简化)脚本部分:
<filelist id="zip-files">
<file name="C:/main.exe" />
<file name="D:/other.dll" />
</filelist>
<target name="zip" depends="zip-check" unless="zip-uptodate">
<zip destfile="${zip-file}" >
<filelist refid="zip-files" />
</zip>
</target>
<target name="zip-check">
<uptodate property="zip-uptodate"
targetfile="${zip-file}">
<srcfiles refid="zip-files" />
</uptodate>
</target>
Run Code Online (Sandbox Code Playgroud)
但是,uptodate
失败因为srcfiles
必须引用a fileset
,而不是a filelist
.仍然,我不能使用a,fileset
因为它需要一个dir
属性,我无法设置,因为源文件不共享基目录.
当然,我可以在压缩它们之前将所有文件复制到公共目录,从而能够使用fileset
,但我想知道是否有替代解决方案.
我正在使用Ant 1.8.1
以下是我尝试过的所有事情:
files = FileList.new("c:/temp/**/*") do |file|
file.exclude("c:/temp/logs/")
end
files = FileList.new("c:/temp/**/*") do |file|
file.exclude("c:/temp/logs")
end
files = FileList.new("c:/temp/**/*") do |file|
file.exclude("c:/temp/logs/*.*")
end
files = FileList.new("c:/temp/**/*") do |file|
file.exclude("c:/temp/logs/**/*")
end
files = FileList.new("c:/temp/**/*") do |file|
file.exclude("c:/temp/**/logs/")
end
Run Code Online (Sandbox Code Playgroud)
rake版本是0.9.2.2,Ruby版本是193.所有都不起作用.我该如何排除文件列表中的目录?
我正在处理拖放文件上传字段.
我能够返回一个包含用户指定的文件的FileList对象.我有一个隐藏的文件输入字段,然后我想要添加文件对象,以便我可以通过AJAX发送表单数据.
我遇到的问题是我似乎无法将文件对象复制到文件输入字段.以下是我的尝试方式:
var files = evt.dataTransfer.files; // FileList object.
var fileUploadElem = document.getElementById(fileUploadId);
// trying to copy the first file of files into the file upload field
fileUploadElem.files[0] = files[0];
// this statement returns '0' instead of '1'
console.log('fileUploadElem length: '+fileUploadElem.files.length);
Run Code Online (Sandbox Code Playgroud)
感谢任何建议或指示.
我是 Python 新手,我正在尝试列出 FTP 中所有子目录中的所有文件。FTP 和往常一样,就是这种格式。
A
B
C
Run Code Online (Sandbox Code Playgroud)
子目录:
AA
BB
CC
Run Code Online (Sandbox Code Playgroud)
['A', 'B', 'C']
我可以使用列出目录ftp.nlist()
。我想得到['AA', 'BB', 'CC']
我的输出。我已经尝试并查找了很多以找到解决方案/提示来执行此操作。
我想for in
使用Typescript循环遍历 FileList 。我从一个常规的旧 for 循环开始,效果非常好:
let files:FileList = e.target.files
for(let i = 0;i<files.length;i++){
doSomething(files[i])
}
function doSomething(f:File){
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用较短的for..in
循环时:
for(let f in files){
doSomething(f)
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:Argument of type 'string' is not assignable to parameter of type 'File'
。因此,f
尽管 FileList 包含文件而不是字符串,但它在某种程度上被视为字符串。
这些修复不起作用:
for(let f:File in files){ // left hand assignment not allowed
doSomething(f as File) // cannot convert string to File
}
Run Code Online (Sandbox Code Playgroud)
这是不可能的吗?
filelist ×10
javascript ×4
file-upload ×2
html5 ×2
python ×2
ant ×1
dependencies ×1
dir ×1
fabric ×1
file ×1
fileapi ×1
fileset ×1
form-data ×1
ftp ×1
ftplib ×1
heic ×1
heif ×1
moodle ×1
rake ×1
ruby ×1
subdirectory ×1
typescript ×1