【问题标题】:How can I only upload text files using drag and drop java script如何仅使用拖放 java 脚本上传文本文件
【发布时间】:2021-05-08 09:57:52
【问题描述】:

您好,我正在尝试使用拖放框上传文件,我希望能够只上传文本文件,没有图片、快捷方式等。我该怎么做,因为现在我的代码会做相反的事情,即显示图像作为缩略图提交。 这是我现在的 js 代码:

    const dropZoneElement = inputElement.closest(".drop-zone");

    dropZoneElement.addEventListener("click", (e) => {
        inputElement.click();
    });

    inputElement.addEventListener("change", (e) => {
        if (inputElement.files.length) {
            updateThumbnail(dropZoneElement, inputElement.files[0]);
        }
    });

    dropZoneElement.addEventListener("dragover", (e) => {
        e.preventDefault();
        dropZoneElement.classList.add("drop-zone--over");
    });

    ["dragleave", "dragend"].forEach((type) => {
        dropZoneElement.addEventListener(type, (e) => {
            dropZoneElement.classList.remove("drop-zone--over");
        });
    });

    dropZoneElement.addEventListener("drop", (e) => {
        e.preventDefault();

        if (e.dataTransfer.files.length) {
            inputElement.files = e.dataTransfer.files;
            updateThumbnail(dropZoneElement, e.dataTransfer.files[0]);
        }

        dropZoneElement.classList.remove("drop-zone--over");
    });
});


function updateThumbnail(dropZoneElement, file) {
    let thumbnailElement = dropZoneElement.querySelector(".drop-zone__thumb");

    
    if (dropZoneElement.querySelector(".drop-zone__prompt")) {
        dropZoneElement.querySelector(".drop-zone__prompt").remove();
    }

    
    if (!thumbnailElement) {
        thumbnailElement = document.createElement("div");
        thumbnailElement.classList.add("drop-zone__thumb");
        dropZoneElement.appendChild(thumbnailElement);
    }

    thumbnailElement.dataset.label = file.name;


    if (file.type.startsWith("text/")) {
        const reader = new FileReader();

        reader.readAsDataURL(file);
        reader.onload = () => {
            thumbnailElement.style.backgroundImage = `url('${reader.result}')`;
        };
    } else {
        thumbnailElement.style.backgroundImage = null;
    }
}

【问题讨论】:

  • 请提供一个工作示例。
  • 您是否考虑在文件输入中添加accept 属性?

标签: javascript html css web


【解决方案1】:

只需使用以下内容检查文件类型:

if (e.dataTransfer.files[0].type == "text/plain")
{
  //accept file
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 2012-10-21
    • 2011-05-16
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2012-03-17
    相关资源
    最近更新 更多