2014-04-26 91 views
0

代碼:從javascript變量中讀取文件路徑並將其發送到表單動作?

<script type="text/javascript"> 
    function showFileName() { 
       var filename = document.getElementById("uploadFile"); 
     } 
</script> 

OR

<script type="text/javascript"> 

     var filename = document.getElementById("uploadFile"); 

</script> 

OR

var filename="uploadedfilename"; 

<form name="AttachmentsForm" method="post" action="<%=Constants.WEB_APP_NAME%><%=Constants.SERVLET_NAME%>?para=ajaxRefTabUpload&action=add&uploadfilename="+filename+"" ENCTYPE="multipart/form-data"> 
    <table class="innerBorderTable" width="100%"> 
     <tr>         
    <td>Attach New File:</td> 
    <td> 
     <INPUT TYPE="FILE" NAME="uploadFile" width="120"> 
     <input type="submit" class="button" value="Add Attachment"> 
    </td>  
     </tr> 
    </table> 
</form> 

我試過3種不同的方法來與+filename+我在動作參數獲得nulluploadfilename傳遞

請告知

回答

0

使用JSP腳本小程序(<% %>)高度勸阻的,使用JSTL<c:tags)或表達式語言(${}

使用JSTL在您的jsp下載jstl.x.x.jar文件並將其添加到您的構建路徑。

然後,在JSP的頂部添加此

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 


解決表單操作URL您有:

<%=Constants.WEB_APP_NAME%><%=Constants.SERVLET_NAME%> 

不需要任何常量,而不是使用<c:url標籤來解決的網址,如:

<c:url value="/yourServletUrl" var="postUrl"/> 
<form action="${postUrl}" method="post" ... 

我是上傳文件名變爲null參數

,因爲你訪問HTML中的JavaScript變量(&uploadfilename="+filename+"),而不是不喜歡:

JSP

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<!DOCTYPE html> 
<html> 
<head> 
    <title>your title</title> 
</head> 
<body> 

<c:url value="/yourServletUrl" var="postUrl"/> 
<form id="AttachmentsForm" 
     method="post" 
     onSubmit="showFileName()" 
     action="${postUrl}para=ajaxRefTabUpload&action=add" 
     enctype="multipart/form-data"> 

    <table class="innerBorderTable" width="100%"> 
     <tr>         
     <td>Attach New File:</td> 
     <td> 
      <input type="file" name="uploadFile" width="120"> 
      <input type="submit" class="button" value="Add Attachment"> 
     </td>  
     </tr> 
    </table> 
</form> 
<script type="text/javascript"> 
    function showFileName(e) { 

     if (e.preventDefault) 
      e.preventDefault(); 

     var filename = document.getElementById("uploadFile"); 
     alert('fileName: '+filename); 

     //here, attach filename to from action and continue your form submition by AJAX 

      // You must return false to prevent the default form behavior 
      return false; 
     } 
     } 

</script> 
</body> 
</html> 
0

試着這麼做:

function showFileName() { 
    document.forms[0].action ="<%=Constants.WEB_APP_NAME%>... //Here goes the expression you want to set the action to 
} 
+0

我試圖這樣,但是當我上添加附件行動點擊不發生 <形式名稱= 「AttachmentsForm」 方法= 「POST」 ENCTYPE = 「多部分/格式數據」> – user1137387

+0

不要使用輸入與類型=提交,使用一個按鈕,使從javaScript代碼提交。 – Andres

+0

我得到空值再次uploadFilefunction showFileName(){ var filename = document.getElementById(「uploadFile」); document.forms [2] .action =「<%= Constants.WEB_APP_NAME%><%= Constants.SERVLET_NAME%>?para = ajaxRefTabUpload&action = add&uploadfilename =」+ filename +「」; \t \t \t document.AttachmentsForm.submit(); \t \t \t} – user1137387

相關問題