2011-09-20 178 views
3

存在一個特殊問題。FormPanel不會在Firefox中上傳文件

我正在使用FormPanel將數據發送到數據庫並上傳文件。

在Chrome中,此工作正常,但在Firefox中,它將數據發送到數據庫,但不上載文件。 Firebug返回以下錯誤:

Form contains a file input, but is missing method=POST and enctype=multipart/form-data on the form. The file will not be sent. 

我發現這很奇怪。 選中該頁面的源代碼,一切似乎很動聽:

<form target="FormPanel_revanweb_1" action="phpFiles/newBookmark.php" enctype="ENCODING_MULTIPART" method="POST" style="position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px;" class="gwt-TabLayoutPanelContent"> 

這是我如何使用內置的UiBinder的形式面板:

<g:FormPanel ui:field="formPanel" action="phpFiles/newBookmark.php" method="POST" encoding="ENCODING_MULTIPART"> 
    <g:VerticalPanel ui:field="tabNewWrapper" stylePrimaryName="tabNew-wrapper"> 
     <g:HTMLPanel ui:field="bookmarkNamePanel" styleName="container"> 
      <g:Label text="Bookmark Name:" /> 
      <g:TextBox name="txtBookmarkName" ui:field="txtBookmarkName" width="100%" /> 
     </g:HTMLPanel> 
     <g:HTMLPanel ui:field="bookmarkURLPanel" styleName="container"> 
      <g:Label text="Bookmark URL:" styleName="label" /> 
      <g:TextBox name="txtBookmarkURL" ui:field="txtBookmarkURL" width="100%" /> 
     </g:HTMLPanel> 
     <g:HTMLPanel ui:field="bookmarkDescriptionPanel" styleName="container"> 
      <g:Label text="Bookmark Description" styleName="label" /> 
      <g:TextArea name="txtBookmarkDescription" ui:field="txtBookmarkDescription" width="100%" height="60px" /> 
     </g:HTMLPanel> 
     <g:HTMLPanel ui:field="bookmarkImgUploadPanel" styleName="container"> 
      <g:Label text="Image:" styleName="label" />        
       <g:VerticalPanel ui:field="vpForm"> 
        <g:FileUpload name="logo" ui:field="uploadFile" /> 
       </g:VerticalPanel> 
     </g:HTMLPanel> 
     <g:HTMLPanel ui:field="bookmarkcbActivePanel" styleName="container"> 
      <g:CheckBox name="cbActive" ui:field="cbActive" text="Active?" styleName="label" /> 
     </g:HTMLPanel> 
     <g:HTMLPanel ui:field="bookmarkTagsPanel" styleName="container"> 
      <g:Label text="Tags:" styleName="label" /> 
      <g:SuggestBox ui:field="sbBookmarkTags" animationEnabled="true" width="100%" /> 
     </g:HTMLPanel> 
     <g:HTMLPanel ui:field="btnOKPanel" styleName="container"> 
      <g:SubmitButton ui:field="btnSubmit" text="OK" styleName="buttonOK" /> 
      <g:Label ui:field="lblWarning" visible="false" styleName="warning" /> 
      <g:Hidden ui:field="sessionID" name="sessionid" visible="false" /> 
     </g:HTMLPanel> 
    </g:VerticalPanel> 
</g:FormPanel> 

回答

4

你的編碼設置爲ENCODING_MULTIPART,不multipart/form-data

注意:ENCODING_MULTIPARTString類型的常量,它不是枚舉; setEncoding on FormPanelString作爲參數;所以如果你在你的ui.xml中寫入ENCODING_MULTIPART,你會設置字符串爲"ENCODING_MULTIPART",而不是FormPanel.ENCODING_MULTIPART常數的值(這個,只能在ui.xml中用<ui:import field="com.google.gwt.user.client.ui.FormPanel.ENCODING_MULTIPART" />引用,然後用作{ENCODING_MULTIPART}

+0

謝謝。不知道這是使用UiBinder的方式。 – elvispt

相關問題