【问题标题】:File Upload using AJAX in Struts2 without page refresh在 Struts2 中使用 AJAX 上传文件而不刷新页面
【发布时间】:2013-10-16 08:39:01
【问题描述】:

我想使用 Struts2 上传文件,但没有刷新页面。

我如何使用 AJAX 来解决这个问题。

$.ajax({
url:"strutsaction",
type : 'POST',
async: false,

});

ajax 请求中的 data 和 contentType 应该写什么?

jsp代码:

<s:form action="strutsaction" method="post" enctype="multipart/form-data">

        <s:file name="imgFileUpload" label="Choose file to upload" accept="image/*"></s:file>
        <s:submit value="Upload" align="center"></s:submit>
    </s:form>

【问题讨论】:

  • 您希望/需要支持哪些浏览器?
  • Chrome、Safari、IE 和 Firefox
  • 使用async: false会导致交易过程中浏览器无响应,不推荐。你为什么不谷歌“ajax 文件上传”?对于完全跨浏览器的解决方案,最好使用现有的包装器或 JS 库,否则从头开始编写并不是那么简单。
  • 您可以使用XMLHttpRequest()异步上传文件,但在IE8及以下无法使用。看看this post。对于 IE8 及以下,您可以使用隐藏 iframe 上传。我在我的项目中使用this plugin

标签: file-upload struts2


【解决方案1】:

您好,下面的代码对我有用。希望对你有帮助。

JSP 代码:

<div id="uploadImg">
     <s:form id="uploadImgForm" action="strutsaction" method="post" enctype="multipart/form-data">
            <s:file name="imgFileUpload" label="Choose file to upload" accept="image/*"></s:file>
            <s:submit value="Upload" align="center" id="uploadImgSubmitBtn"></s:submit>
     </s:form>
<div>

JQuery:

$("#uploadImgSubmitBtn").click(function(e){

    // Get form
    var form = $('#uploadImgForm')[0];

    // Create an FormData object
    var data = new FormData(form);

    $.ajax({
        type: "POST",
        enctype: 'multipart/form-data',
        url: "strutsaction.action",
        data : data,
        cache: false,
        processData: false,
        contentType: false,
        success: function(data){
            $('#uploadImg').html(data);
        }
    }); 
});

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多