HTML5 ClipboardData / FileReader将所有文件类型视为“ image / png”

drz*_*drz 5 javascript clipboard jquery blob filereader

我正在使用剪贴板数据和FileReader的组合,以允许用户粘贴文件并将其上传到聊天Web应用程序。由于此过程的性质,我需要对文本,图像和其他文件进行单独的处理。

目前,纯文本和图像可以正常工作,它们可以调用适当的条件,但是当我粘贴任何其他类型的文件(.docx,.php等)时,我仍然在控制台中看到“ image / png”作为剪贴板项类型,可以理解地导致以下错误:

未捕获到的TypeError:无法在“ FileReader”上执行“ readAsDataURL”:参数1的类型不是“ Blob”。(…)

有没有办法弄清楚为什么会这样?我希望剪贴板API会以不同的方式显示非图像文件。

这是我当前的代码:

  $(document).on('paste', "#textBox", function (ev) {
  console.log("pasted");
  var clipboardData = ev.originalEvent.clipboardData;

  $.each(clipboardData.items, function (i, item) {
      console.log(item.type);
      if (item.type.indexOf("image") !== -1) {
          var reader = new FileReader();

          reader.onload = function (e) {
            $( "#modalTrigger" ).trigger( "click" );
              $("#imgPreview").attr('src', e.target.result);
          }
          console.log("pasted image");
          reader.readAsDataURL(item.getAsFile());
      }
      else if (item.type.indexOf("text/plain") !== -1) {
        console.log("pasted regular text");
      }
      else {
        //NEVER REACHES THIS
        console.log("pasted other");
      }
  });
});
Run Code Online (Sandbox Code Playgroud)

谢谢。