当前位置: 首页 > 知识库问答 >
问题:

如何通过jQuery/Ajax上传文件[重复]

岳允晨
2023-03-14

我目前通过AJAX发布我的表单,代码如下:

$(document).ready(function(){
    $("form#createForm").submit(function() { // loginForm is submitted
        $("form#createForm input#createForm_submit").attr('disabled','disabled');

        tinyMCE.triggerSave();

        $.ajax({
            type: "POST",
            dataType: "json",
            url: "perform", // URL of the Perl script
            data: $("#createForm").serialize(),

            // script call was successful 
            // data contains the JSON values returned by the Perl script 
            success: function(data){

                $('div.form-group').each(function(){
                    $(this).removeClass('has-error');
                });

                if (data.error) { // script returned error
                    var myList = $('ul.msg-list').empty();

                    $.each(data.msg, function(key,item) {
                        $("div."+key).addClass('has-error');
                        $('<li>').text(item.errtxt).appendTo(myList);
                    });


                    $('div#create_createresult').html('some error').html(myList);
                    $('div#create_createresult').addClass("text-danger");

                    $("form#createForm input#createForm_submit").removeAttr('disabled');
                } // if
                else 
                { // login was successful
                    //$('form#login_loginform').hide();
                    $('div#create_createresult').text(data.msg);
                    $('div#create_createresult').addClass("success");

                } //else
            } // success
        }); // ajax
        $('div#login_loginresult').fadeIn();
        return false;
    });
});

现在,我想添加以相同形式上传图片的功能,并在这个JQUERY和相同的服务器端脚本中实现它。我唯一的问题是,我不知道怎么做…我测试了上面的代码,发现它没有将$_files-变量传递给服务器端脚本。

谁能带领我在任何方向,我需要做的,以增加与此脚本图像上传的可能性?

共有1个答案

松越
2023-03-14

试着用这个。

// grab your file object from a file input
$('#fileInput').change(function () {
  sendFile(this.files[0]);
});

// can also be from a drag-from-desktop drop
$('dropZone')[0].ondrop = function (e) {
  e.preventDefault();
  sendFile(e.dataTransfer.files[0]);
};

function sendFile(file) {
  $.ajax({
    type: 'post',
    url: '/targeturl?name=' + file.name,
    data: file,
    success: function () {
      // do something
    },
    xhrFields: {
      // add listener to XMLHTTPRequest object directly for progress (jquery doesn't have this yet)
      onprogress: function (progress) {
        // calculate upload progress
        var percentage = Math.floor((progress.total / progress.totalSize) * 100);
        // log upload progress to console
        console.log('progress', percentage);
        if (percentage === 100) {
          console.log('DONE!');
        }
      }
    },
    processData: false,
    contentType: file.type
  });
}
 类似资料:
  • 问题内容: 我使用2个文件index.js,upload.php尝试通过ajax上传文件(img),如果成功追加到div 。 但是它不起作用,有几个问题,下面我的代码有什么建议吗? 谢谢。 upload.php 1. 还需要添加吗? 2. 并检查$ _FILES的大小或tmp_name是否仍使用? index.js 3.这几行是对的吗? 4.我错过或错了什么吗? 问题答案: 在其构造函数中接受一个

  • 问题内容: 我可以使用以下jQuery代码使用ajax请求的POST方法执行文件上传吗? 如果可能,我是否需要填写部分?这是正确的方法吗?我只将文件发布到服务器端。 我一直在搜索,但是我发现是一个插件,而在我的计划中我不想使用它。至少目前是这样。 问题答案: 上传文件是 不是 有可能通过AJAX。 您可以使用来上传文件,而无需刷新页面。 更新 使用XHR2,支持通过AJAX上传文件。例如通过对象,

  • 问题内容: 我已经尝试上传一个简单的文本文件了几个小时,但似乎仍然无法正常工作。 我不断收到无效的表格,说我缺少“ file_source”。 为什么“ file_source”没有发布? 我还可以发送“ file_source”,但是它仍然说它丢失了。应该为Django FileFiled提供哪种类型的元素? Django表格: Django模板(呈报形式): jQuery / Ajax上传:

  • 问题内容: 我想在我的Intranet页面上实现一个简单的文件上传,并使用最小的设置。 这是我的HTML部分: 这是我的JS jQuery脚本: 网站的根目录中有一个名为“ uploads”的文件夹,具有“用户”和“ IIS_users”的更改权限。 当我选择具有文件格式的文件并按下上载按钮时,第一个警报将返回“ [object FormData]”。第二个警报不会被调用,“上传”文件夹也为空!

  • 我想在我的内联网页面中实现一个简单的文件上传,尽可能使用最小的设置。 这是我的HTML部分: 这是我的JS jquery脚本: 在网站的根目录中有一个名为“uploads”的文件夹,具有“users”和“IIS_users”的更改权限。 当我使用文件表单选择一个文件并按下上载按钮时,第一个警报返回“[object FormData]”。第二个警报未被调用,“上载”文件夹也为空!? 有人能帮我找出问

  • 我有一个多文件上传表单: 我用ajax发布这些文件。我想一个接一个地上传选定的文件(为了创建单独的进度条,出于好奇)。 我可以通过以下方式获得文件列表或单个文件: 耶林 但是FileList是不可变的,我不知道如何提交单个文件。 我认为这是可能的,正如我所看到的http://blueimp.github.com/jQuery-File-Upload/.我不想使用这个插件,因为它与学习和结果一样重要