【问题标题】:How Do I Send The File Data Without Form With Ajax On Server?如何在服务器上使用 Ajax 发送没有表单的文件数据?
【发布时间】:2014-10-01 22:39:26
【问题描述】:

我编写了一个 javascript 代码,可以很好地收集用户想要上传的每个文件。但是当我添加拖放文件选项时,事情发生了变化。 默认情况下,我有一个监控 input[type='file'] 更改事件处理程序的代码,一旦检测到它,就会执行操作并将文件发送到服务器进行上传。 但是由于拖放不会更改 input[type='file'] 值,并且由于安全原因我也不能以编程方式更改它,我很震惊如何发送在网站上拖放的文件。

这是我的一些代码:

document.getElementById('drop').addEventListener('drop', function (e) {
  e = e || window.event; 
  e.preventDefault();
  var dt    = e.dataTransfer;
  var files = dt.files;
  for (var i=0; i<files.length; i++) {
    var file = files[i];
    var reader = new FileReader();

    reader.readAsDataURL(file);
    addEventHandler(reader, 'loadend', function(e, file) {
    var bin           = this.result; 
    var filename       = file.name;
    var filesize  = (file.size/1048576).toFixed(2) + ' MB';
    alert(' '+filename+' '+filesize+' '); // DEBUGGING ONLY
    console.log("YEAY");
    if(filecheck(filename)) {       // Additional Function
    step2(filesize, filename, bin); // Additional Function
    $('.btn').click(function() {    // Button to be clicked to start upload
    $('#main_img_upload').submit(); // Form with that input[type='file']
    });
    }
    else {
    alert("Wrong File");
    return false;
    }
    }.bindToEventHandler(file), false);
  }
  return false;
});

显然,它开始上传,但服务器没有收到任何内容,因为没有对表单进行任何更改。但我有所有必要的详细信息(文件名、文件大小等)

任何帮助将不胜感激。

【问题讨论】:

  • 我什至没有尝试过拖放功能,但我的想法是,如果我没记错的话,你可以像 .ondrag(){input = get file info} 因为我不熟悉正确的语法,所以我可以这样表达。
  • 本教程对我的类似项目帮助很大:html5doctor.com/drag-and-drop-to-server
  • @Alexdn 我已经掌握了有关该文件的所有信息。只需要知道如何将文件发送到服务器。我无法理解其他 jQuery 拖放插件正在使用的概念。就这么简单:)
  • 查看该教程。有一个标题叫做:自动上传文件。这是一个非常简单明了的例子。
  • 哦,真的吗?那么也许你可以看看上面的其他评论。我只是给出我的想法,顺便说一句,谢谢你澄清我呵呵:)

标签: javascript php jquery ajax


【解决方案1】:

试试这个代码。

data.append("FileName", files[0]);

        $.ajax({
            url: "../",
            type: "POST",
            processData: false,
            contentType: false,
            data: data,
            success: function (data) {
                if (data) {

                }
            },
            error: function (er) {
                MSGBox(er);
            }

        });
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-21
    • 2014-04-09
    • 2019-07-09
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多