如何使用提交上传文件而不重新加载页面

时间:2012-09-19 02:38:30

标签: javascript jquery jstl submit form-submit

我使用提交按钮将文件上传到tomcat服务器,但我的问题是页面正在重新加载。如果我使用return false,则不会上传文件。我尝试使用按钮而不上传文件。

我正在为我的客户端使用jstl和javascript。

<form:form modelAttribute="uploadItem" name="frm" method="post"
    enctype="multipart/form-data">
    <fieldset>
        <legend>Upload File</legend>
        <table>
            <tr>
                <td><form:label for="fileData" path="fileData">File</form:label><br />
                </td>
                <td><form:input path="fileData" id="csv" type="file" /></td>
            </tr>
            <tr>
                <td><br /></td>
                <td><input id="subUpload" type="submit" value="Upload" /></td>
            </tr>
        </table>
    </fieldset>
</form:form>

我的javascript:

$("#subUpload").click(function(e) {
    var image = document.getElementById("csv").value;
    if(image!=''){
        var checkimg = image.toLowerCase();
            if (!checkimg.match(/(\.CSV|\.csv)$/)){
                alert("Please enter  Image  File Extensions .jpg,.png,.jpeg");
                document.getElementById("image").focus();
                return false;
            }
    }
    return true;
    e.preventDefault();
});

我还使用了e.preventDefault(),但仍在重新加载。

请帮忙。

4 个答案:

答案 0 :(得分:2)

如果你使用iframe,这是可能的。

答案 1 :(得分:1)

  • return [optional value here];下同一个区域内的任何内容都将被省略,因此e.preventDefault()行永远不会被执行。
  • return true会告诉按钮表现正常,因此会尝试采取常规操作
  • return falsee.preventDefault()将执行相同的操作(停止提交表单的文件),除了return false另外阻止在文档中冒出点击事件。

如果要无缝发送文件,可能需要使用iframe或使用jQuery发送数据,而不是让表单处理数据传输。

答案 2 :(得分:1)

您可以使用uploadify类型组件,该组件可以在提交表单之前上传文件

答案 3 :(得分:-1)

创建表单.. ex

<form name="form" method="post" enctype="multipart/form-data" action="test.php">
<input type="file" name="piture"  value="" onChange="window.document.forms['form'].submit();"/> </form> 

test.php的

  if(preg_match('/[.](jpg)|(gif)|(png)$/', $_FILES['picture']['name'])) {  
    $rand=rand(000000000,9999999);
    $fl_name = $_FILES['picture']['name'];
    $expld = explode('.', $fl_name);
    $extnnew = $expld[1];
    $filename = $rand.'.'.$extnnew;  
    $source = $_FILES['picture']['tmp_name'];
    $path_to_image_directory = "uploads/"; 
    if(!is_dir($path_to_image_directory)){
mkdir($path_to_image_directory, 0777);
chmod($path_to_image_directory, 0777);} 

    $target = $path_to_image_directory . $filename;  
    move_uploaded_file($source, $target);  
    $sql ="insert into picture values('','".$filename."','Now()')";
    mysql_query($sql) or die(mysql_error());

                        } 
header('Location:page.php');