2017-07-27 59 views
0

我想在liferay的web表單portlet中添加一個字段來上傳文件。目前,我可以在我的表單中添加此字段,但無法獲取服務器/提及位置上的附加文件。我得到一個空指針異常。以下是我在web表單portlet的4個文件中所做的更改。在web表單portlet中附加文件

edit_field.jsp
<aui:option selected='<%= fieldType.equals("file") %>' value="file"> 
    <liferay-ui:message key="file" /></aui:option> 

view.jsp的
<c:when test='<%= fieldType.equals("file") %>'> 
    <tr> 
     <td class="order-table-label"> 
     <label><%= HtmlUtil.escape(fieldLabel) %></label> 
    </td> 
    <td> 
    <aui:input cssClass='<%= fieldOptional ? "optional" : StringPool.BLANK 
    %>' label="" name="<%= fieldName %>" type="file" value=" 
    <%=HtmlUtil.escape(fieldValue) %>"/> 
    </td> 
    </tr> 
</c:when> 

ConfigurationActionImpl.java
boolean isFileUpload = false; 

    if("file".equals(fieldType)) 
    { 
    isFileUpload = true; 
    } 
    preferences.setValue("isFileUpload" + i, String.valueOf(isFileUpload)); 

WebFormPortlet.java

UploadPortletRequest uploadRequest = 
    Portalutil.getUploadPortletRequest(actionRequest); 

    File uploadedFile = uploadRequest.getFile("file"); 

    String sourcefileName = uploadRequest.getFileName(uploadedFile.getName()); 
    (Throws NULL pointer exception on this line) 

    File folder = new File("\tmp\uploadedfile"); 

    File filepath = new File(folder.getAbsolutePath() + File.seperator + 
    sourcefileName); 

    FileUtils.copyFile(uploadedFile ,filepath); 

回答

0

我會將文件存儲在文檔庫中而不是tmp路徑,實際上它完全超出了門戶本身的範圍。

您是否需要portlet的郵件功能?我不認爲你的定製可以在這個用例中起作用

看起來像npe聲明請求中沒有文件,或者沒有那個名稱,你是否已經查看了這個請求?

+0

我已經在portal-ext.properties中提到了文檔庫的路徑,但事情是,沒有什麼是僅在請求中設置的,我不需要郵件功能,我只想將文件保存在服務器和其他信息中數據庫中的表單。如何在請求中獲取此文件? –