繁体   English   中英

html 输入是否支持从 zip 文件夹拖放?

[英]Does html input support drag & drop from zip folder?

我在带有 HTML 输入框的 React 组件中实现了拖放功能。 它运行完美,它接收文件并将其上传到 Amazon S3,检查文件类型是否与 props 指定的兼容。

从 ZIP 文件中拖动文件时会出现问题。 我 console.loggued 结果文件 object,与从桌面文件夹拖动的文件的唯一区别是大小(来自 ZIP 文件 => 大小 = 0)。

当我拖动文件时,有没有办法识别它来自 ZIP 文件,以便它等到文件完成上传到输入? 另外,如何检查文件是否已完成上传?

接收文件并检查它的 function:

export default function(e, onUpload, acceptedTypes) {
  e.stopPropagation()
  e.preventDefault()
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
    const file = e.dataTransfer.files[0]
    if (isAcceptedType(file, acceptedTypes)) {
      onUpload(file)
    }
  }
}

我一开始忘了提到,当我在输入中放置一个文件时,它会立即“上传”到 S3,但大小为 0(因为它来自 ZIP 文件),所以该站点将其识别为一个文件,但是当我正在尝试查看它说错误的内容。

谢谢!

我最终采用了这种解决方法,因为我还没有找到实际的解决方案:

const timeTolerance = 10;
const now = new Date().getTime();
const isAutoGenerated = now - file.lastModified < timeTolerance;
if (file.size === 0 && isAutoGenerated) {
  return false; // invalid file
}

因为lastModified非常接近当前时间,所以它很可能是自动生成的,结合 0 的大小,我将其识别为占位符文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM