2017-11-22 3 views
0

私はajax呼び出しを使用して、同じ名前のファイルが存在するかどうかをチェックするファイルアップロードプログラムを実行しています。ここでコントロールがスクリプトメソッド "checkExistence()"に移動しないのはなぜですか?

はコード

JSPページ

<%@ taglib prefix = "form" uri = "http://www.springframework.org/tags/form"%> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <title>File Upload Example</title> 
    <script src="/AjaxWithSpringMVC2Annotations/js/jquery.js"></script> 
    <script type="text/javascript"> 
    function checkExistence() { 
       var name = $('#file').val(); 
       File f=new File(name); 
       var filename=f.getOriginalFileName(); 
       document.write(filename); 
       $.ajax({ 
       type: "POST", 
       url: "/FileController/fileexists", 
       data: "filename=" + filename, 
        success: function(response){ 
       if(response==0) 
       { 
       ch="zero"; 
        document.fileform.choice.value=ch; 
        document.fileform.submit(); 
       } 
      else if(response==1) 
       { 
       alertchoice=alert("File already exists !! Do you want me to overwrite it ?"); 
       if(alertchoice==true || alertchoice.equals(true)) 
        { 
        ch="one"; 
       document.fileform.choice.value=ch; 
       document.fileform.submit(); 
        } 
       else { 
        ch="two"; 
        alert("Upload suspended as requested by the user "); 
       } } 
        }, 
        error: function(e){ 
       alert('Error: ' + e); 
       } 
       }); 
       } 
</script> 
</head> 
<body style="background-color:powderblue;color:Tomato"> 
<br> 
<br> 
<center><form name="fileform" action="savefile" method = "POST" modelAttribute = "fileUpload" 
     enctype = "multipart/form-data"> 
     Please select a file to upload : 
     <input type = "file" name = "file" id="file"><br><br><br> 
     <input type="hidden" name="choice"> 
     <input type = "button" value ="upload" onClick="checkExistence()"> 
     <input type="reset" value="Reset"> 
     </form></center> 
     <br> 
     <br> 
     <br> 
     <center><b> ${message} </b></center> 
    </body> 
</html> 

//コントローラクラス

@RequestMapping(value="/fileexists",method = RequestMethod.POST)  

@ResponseBody public String checkingForDuplicates(HttpServletRequest req, HttpServletResponse res){ 
    String filename=req.getParameter("filename"); 
    int i=isDuplicate(filename); 
    return i+""; 
} 

は、私は、ボタンのアップロードをクリックしていたときに、コントロールがに行くべきここにありますfunction checkExistence()しかし、それは動いていません。私のコードに何か問題がありますか?そして私は使用しています

ファイルf =新しいファイル(名前); var filename = f.getOriginalFileName();

アップロード中のファイルの名前を取得するJavaScript関数です。それは動作しますか?

答えて

0

次のように修正しました。 "/ FileController/FILEEXISTS"
へのURL: "FILEEXISTS"

  • URLからAJAX呼び出しのURLを変更するjQueryプラグイン

  • 含む

    1. jspページでアップロードするファイルの名前を取得する

      var name = $( '#file')。val(); ファイルf =新しいファイル(名前)。 var filename = f.getOriginalFileName();

      日時:

      VARファイル名=のdocument.getElementById( 'ファイル')の値を、。 (チェック重複の)ファイル名を取得するコントローラ

      前に

         var lastIndex = filename.lastIndexOf("\\"); 
             if (lastIndex >= 0) { 
             originalfilename = filename.substring(lastIndex +1); 
             } 
      
    2. :文字列のファイル名= req.getParameter( "ファイル名");

      変更されました。String filename = req.getParameter( "originalfilename");

  • 関連する問題