使用ajax post上传文件而不刷新页面

Upload files without refreshing the page by using ajax post

本文关键字:刷新 文件 ajax post 使用      更新时间:2023-09-26

我有一个页面文件-upload.jsp,代码片段如下:

 <form action="" id="frmupload" name="frmupload" method="post" enctype="multipart/form-data">
     <input type="file" id="upload_file" name="upload_file" multiple="" />
     <input type="submit" value="Update" />
 </form>

我有两个问题:

  1. 当我选择一些文件时,即input类型fileonchange事件,文件应该会被上传。

    我有一个Java页面,它接收多部分请求参数并将文件上传到所述位置。我的问题是表单提交onchange,这样Java文件就可以继续进行进一步的操作。

    我在谷歌上搜索了很多文章。有人说无法通过Ajax直接上传文件,也有人说可以通过Ajax/jQuery将表单提交到iframe。

    我尝试了很多来自互联网的代码,比如:

    $(document).ready(function(){
        $('upload_file').change(function(){
            var data = new FormData();
            data.append('file', $(this[0].files[0]));
            $.ajax({
                url: 'photo.jsp',
                type: 'post',
                contentType: attr('enctype', "multipart/form-data"),
                data: data,
                success: function(data){
                    alert(data);
                }
            })
        });
    });
    

    但未能得到预期的结果。

  2. 我还需要一个上传操作的进度条。

看看这个使用IFrame的例子,它在PHP中,但更改操作应该可以完成

使用隐藏的IFrame 上传Ajax样式的文件

由于您已经在使用jQuery,我肯定会选择jQuery表单插件,它允许您通过AJAX进行表单上传,即使表单包含file输入。

它的网站上有一个例子,展示了如何显示进度条。

看看这个例子,它正是你想要的

http://www.asp.net/ajaxlibrary/ajaxcontroltoolkitsamplesite/asyncfileupload/asyncfileupload.aspx