2013-03-28 55 views
0

下面是處理文件上傳的JSP。我想在JS文件中調用js函數,這樣如果文件成功上傳,它會調用它。我怎麼能讓它發生?從JSP調用JS文件中的javascript函數

JS:

function uploadsuccess(){ 
     alert("You've successfully uploaded a file!"); 
} 

JSP:

<%@ page import="java.io.*,java.util.*, javax.servlet.*" %> 
<%@ page import="javax.servlet.http.*" %> 
<%@ page import="org.apache.commons.fileupload.*" %> 
<%@ page import="org.apache.commons.fileupload.disk.*" %> 
<%@ page import="org.apache.commons.fileupload.servlet.*" %> 
<%@ page import="org.apache.commons.io.output.*" %> 

<% 
    File file ; 
    int maxFileSize = 5000 * 1024; 
    int maxMemSize = 5000 * 1024; 
    ServletContext context = pageContext.getServletContext(); 
    String filePath = context.getInitParameter("file-upload"); 

    // Verify the content type 
    String contentType = request.getContentType(); 
    if ((contentType.indexOf("multipart/form-data") >= 0)) { 

     DiskFileItemFactory factory = new DiskFileItemFactory(); 
     // maximum size that will be stored in memory 
     factory.setSizeThreshold(maxMemSize); 
     // Location to save data that is larger than maxMemSize. 
     factory.setRepository(new File("c:\\temp")); 

     // Create a new file upload handler 
     ServletFileUpload upload = new ServletFileUpload(factory); 
     // maximum file size to be uploaded. 
     upload.setSizeMax(maxFileSize); 
     try{ 
     // Parse the request to get file items. 
     List fileItems = upload.parseRequest(request); 

     // Process the uploaded file items 
     Iterator i = fileItems.iterator(); 

     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>JSP File upload</title>"); 
     out.println("</head>"); 
     out.println("<body>"); 
     while (i.hasNext()) 
     { 

      FileItem fi = (FileItem)i.next(); 
      if (!fi.isFormField()) 
      { 
      // Get the uploaded file parameters 
      String fieldName = fi.getFieldName(); 
      String fileName = fi.getName(); 
      boolean isInMemory = fi.isInMemory(); 
      long sizeInBytes = fi.getSize(); 
      // Write the file 
      if(fileName.lastIndexOf("\\") >= 0){ 
      file = new File(filePath + 
      fileName.substring(fileName.lastIndexOf("\\"))) ; 
      }else{ 
      file = new File(filePath + 
      fileName.substring(fileName.lastIndexOf("\\")+1)) ; 
      } 
      fi.write(file) ; 
      out.println("Uploaded Filename: " + filePath + 
      fileName + "<br>"); 
      } 
     } 
     out.println("</body>"); 
     out.println("</html>"); 
     }catch(Exception ex) { 
     System.out.println(ex); 
     } 
    }else{ 
     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>Servlet upload</title>"); 
     out.println("</head>"); 
     out.println("<body>"); 
     out.println("<p>No file uploaded</p>"); 
     out.println("</body>"); 
     out.println("</html>"); 
    } 
%> 
+0

Ajax是你要找的字。 – Sanchit 2013-03-28 04:19:02

+0

@ U.f.O你看過答案嗎? – plalx 2013-05-17 00:07:18

回答

0

不要認爲這是一個很好的做法,但你可以這樣來做:

... 
out.println('<script src="path_to_your_script.js"></script>'); 
out.println('<script>uploadsuccess();</script>'); 
out.println("</body>"); 
out.println("</html>"); 
0

之前
out.println("</head>"); 

地說:

out.println("<script type='text/javascript' src='javascript_path_file'></script>"); 

而更換

out.println("<body>"); 

通過這一個:

out.println("<body onload='uploadsuccess();'>");