javascript - 构造失败 'FormData'

标签 javascript dropzone

关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。












此问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-topic在这里,这个问题的解决方式不太可能帮助 future 的读者。


3年前关闭。







Improve this question




当我在我的 dropzone 中上传文件时,它不起作用。通常它工作得很好,但自从 1 个月以来我有这个 JS 错误:

Uncaught TypeError: Failed to construct 'FormData': parameter 1 is not of type 'HTMLFormElement'.
那是代码,当我使用 FormData 时:
 var form_data = new FormData("#my-awesome-dropzone");
多区代码
  Dropzone.options.myAwesomeDropzone = {
    maxFilesize: 5,
    maxFiles: 1,    
    addRemoveLinks: true,
    dictResponseError: 'Server not Configured',
    acceptedFiles: ".pdf",
    init:function(){
      var self = this;
      // config
      self.options.addRemoveLinks = true;
      self.options.dictRemoveFile = "Delete";
      //New file added
      self.on("addedfile", function (file) {
          console.log('new file added ', file);
             if(!confirm("Do you want to upload the file?")){
                this.removeFile(file);
                return false;
            }

      });
      // Send file starts
      self.on("sending", function (file, xhr, formData) {
        console.log('upload started', file);
        $('.meter').show();

            var form_data = new FormData("#my-awesome-dropzone");

            $.ajax({
                url: '/settings/uploadFile', 
                data: 'file=' + file.name ,
                type: 'POST',
                processData: false,
                contentType: false,
                success: function(response) {
                }
            });
      });
      
      // File upload Progress
      self.on("totaluploadprogress", function (progress) {
        console.log("progress ", progress);
        $('.roller').width(progress + '%');
      });

      self.on("queuecomplete", function (progress) {
        $('.meter').delay(999).slideUp(999);
      });
      
      // On removing file
      self.on("removedfile", function (file) {
        console.log(file);
      });
    }
代码
     <form  enctype="multipart/form-data" action="/settings/uploadFile"  method="post" class="dropzone" 
                        id="my-awesome-dropzone">

         
                     </form> 
编辑 01-08-2019 :好的,刚刚测试过,它可以在 Microsoft Edge 44.17763.1.0 上运行,但不能在 Google Chrome 或 Firefox 上运行,有什么解释吗?

最佳答案

您正在传递 字符串 FormData .正如错误所说,它需要一个表单元素,而不是字符串。所以:

var form_data = new FormData(document.getElementById("my-awesome-dropzone"));

现场示例:

var data = new FormData(document.getElementById("my-awesome-dropzone"));
console.log("Created FormData, " + [...data.keys()].length + " keys in data");
<form  enctype="multipart/form-data" action="/settings/uploadFile"  method="post" class="dropzone" id="my-awesome-dropzone">
<input type="text" name="x" value="kittens">
<input type="text" name="y" value="puppies">
</form>

关于javascript - 构造失败 'FormData',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57285984/

相关文章:

Javascript 禁用按钮

php - 如何上传文件,使用php中的dropzone将文件详细信息保存到mysql数据库

javascript - 如何装饰 UI-Router 中的当前状态解析函数?当前函数未被调用

javascript - Dropzone 客户端通过将文件上传到 AWS 预签名 URL 来调整大小

DropZone:如何接受 .csv 文件?

javascript - 重命名文件选项在 dropzone.js 中不起作用

javascript - 限制 Dropzone 仅上传特定类型的文件

javascript - Lodash _.find 在参数中使用变量不起作用

javascript - 使用原型(prototype)观察注入(inject)元素上的事件

javascript - Canvas 的颜色和重叠问题