【问题标题】:Uploading file in a form without page refresh在不刷新页面的情况下以表单上传文件
【发布时间】:2023-04-11 11:51:01
【问题描述】:

我有这段代码:

<form name="myUploadForm" method="post" action="/scripts/upload.do" enctype="multipart/form-data" id="fileUpload">
   <table width="100%" border="0"> 
      <tr>
         <td>
            <input type="file" name="xlsFile" size="60" value="test.xls"> 
            <input type="button" value="Upload File" name="upload_xls">
         </td>
      </tr>
   </table>
</form>

现在我可以使用 Struts 上传文件,但它会刷新页面。在不刷新页面的情况下如何执行此操作?

【问题讨论】:

标签: javascript html ajax forms


【解决方案1】:

什么对我有用:

在表单标签上,我有 target="hidden-iframe"

页面上隐藏的 i-frame 如下所示:

<iframe name="hidden-iframe" style="display: none;"></iframe>

这里要强调的重要一点是表单引用了框架的 name 属性,而不是 id

【讨论】:

  • @FlorianB 该博客的日期为 2008 年。(而且,我知道,您的评论日期为 2016 年!)
【解决方案2】:

您可以使用 jQuery 发布表单并返回结果。

$('#formId' ).submit(
    function( e ) {
        $.ajax( {
            url: '/upload',
            type: 'POST',
            data: new FormData( this ),
            processData: false,
            contentType: false,
            success: function(result){
                console.log(result);
                //$("#div1").html(str);
            }
        } );
        e.preventDefault();
    } 
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="formId" action="/upload" enctype="multipart/form-data" method="post">
        <input type="text" name="title"><br>
        <input type="file" name="upload" multiple="multiple"><br>
        <input type="submit" value="Upload">
</form>
<div id="div1">
</div>

【讨论】:

    【解决方案3】:

    有两种方法:

    1. HTML5 支持文件 API。
    2. 创建一个隐藏的 iframe,将表单的属性“target”指向 iframe 的 ID。

    【讨论】:

      【解决方案4】:

      如果你可以使用 jQuery,你可以使用 jQuery File Upload 之类的东西。

      【讨论】:

        猜你喜欢
        • 2017-05-11
        • 2019-11-25
        • 1970-01-01
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多