我尝试通过拖放上传CSV文件,但是当我上传其他内容时,如Excel文件,我没有收到警报消息。我做错了什么?
我调用下面的函数,实际应该检查我是否上传了一个CSV文件。稍后,在我验证了文件扩展名后,我读取了该文件,并在表格中填入了我在此(CSV)文件中的数据。这就是除了CSV之外没有其他上传类型很重要的原因。
以下是代码:
function handleFileSelection(evt) {
evt.stopPropagation(); // Do not allow the drop event to bubble.
evt.preventDefault(); // Prevent default drop event behavior.
var files = evt.dataTransfer.files; // Grab the list of files dragged to the drop box.
if (!files) {
alert("<p>At least one selected file is invalid - do not select any folders.</p><p>Please reselect and try again.</p>");
return;
}
// "files" is a FileList of file objects. Try to display the contents of each file:
for (var i = 0, file; file = files[i]; i++) {
if (!file) {
alert("Unable to access " + file.name);
continue; // Immediately move to the next file object.
}
if (file.size == 0) {
alert("Skipping " + file.name.toUpperCase() + " because it is empty.");
continue;
}
if (!file.name.endsWith == ".csv") {
alert("Skipping " + file.name.toUpperCase() + " because it is not a known text file type.");
continue;
}
startFileRead(file); // Asychronously fire off a file read request.
}
}
答案 0 :(得分:0)
问题在于这一行:
if (!file.name.endsWith == ".csv") {
您正在将属性的否定与“.csv”进行比较,而您可能希望执行the function with that name。
但是,该功能并非在所有浏览器中都可用,因此您可以更好地使用此替代方法:
if (file.name.search(/\.csv$/) === -1) {
备注
第一个if
块中的代码永远不会执行,因为!file
将始终评估为false
。这是因为for
循环中的循环条件(中间表达式:file = files[i]
)将在file
变为假的时候退出循环。
答案 1 :(得分:-2)
你有这个:
if (!file.name.endsWith == ".csv") {
你想要这个:
if (!file.name.endsWith(".csv")) {