javascript - 将 blob 添加到 dropzone.js 队列而不是文件

标签 javascript dropzone.js

我使用 dropzone.js 上传文件。但是,我的文件在上传前已经过预处理。最后我有一个 blob 我想上传。 不幸的是,只有 addFile() 方法可用,但没有 addBlob() 方法。我知道我可以像这样使用 File 构造函数:

new File([blob], 'filename', options)

但构造函数在 IE/Edge 中不可用。

有什么方法可以将 blob 附加到 dropzone.js 队列?

最佳答案

addFile() 可以直接与 blob 一起使用:

function dataURItoBlob(dataURI) {
  // http://stackoverflow.com/a/12300351/4578017
  var byteString = atob(dataURI.split(',')[1]);

  var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]

  var ab = new ArrayBuffer(byteString.length);
  var ia = new Uint8Array(ab);
  for (var i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i);
  }

  var blob = new Blob([ab], {type: mimeString});
  return blob;
}


$(() => {
  const options = {
    autoProcessQueue: false,
    url: "/file/post"
  };
  const myDropzone = new Dropzone( $('#dz').get(0), options);

  function addBlob(blob) {
    blob.name = 'myfilename.png'
    myDropzone.addFile(blob);
  }

  $('#preprocess').on('change', function() {
    const reader = new FileReader();
    reader.onload = () => {
      $('#data-uri').text(reader.result.slice(0, 64) + '...');
      addBlob(dataURItoBlob(reader.result));
    };
    reader.readAsDataURL(this.files[0]);
  });
})
#dz {
  height: 240px;
  width: 240px;
  background: #ccc;
}
<link href="https://github.com/enyo/dropzone/blob/master/dist/dropzone.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://raw.github.com/enyo/dropzone/master/dist/dropzone.js"></script>
<input id="preprocess" type="file">
<pre id="data-uri"></pre>
<div id="dz"> dropzone.js </div>

File object 只是一种特定的 Blob , addFile() 不要求它是 File .

关于javascript - 将 blob 添加到 dropzone.js 队列而不是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39078206/

相关文章:

javascript - 如何为 ChartJS 条形图中的每个条形获取不同的标签?

javascript - Dropzone.js 无法在 Windows 上上传文件

drag-and-drop - 如何将提交按钮添加到 dropzone

javascript - 使用 JavaScript 事件委托(delegate)设置删除事件监听器的有效方法是什么

javascript - Pug用户名插值问题

javascript - 检查jquery根目录中是否存在文件夹

javascript - Dropzone.js 如何使用 TR 或 TBODY 作为预览模板?

Javascript:拼接数组中元素的所有实例

dropzone.js - Dropzone.js和每个文件的完整路径

javascript - 使用 DropZone.js 一个一个上传多个文件