incubator-jspwiki-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Janne Jalkanen <Janne.Jalka...@ecyrd.com>
Subject Re: VS: Re: Upload Question
Date Sat, 18 Oct 2008 16:24:35 GMT

Then I have no idea what is going on...

/Janne

On 18 Oct 2008, at 19:18, Benedikt Mohrmann wrote:

> yes, I did so.
>
>
> Janne Jalkanen schrieb:
>>
>> I think that URL is fine (otherwise you would get a 404 NOT  
>> FOUND).  Did you implement the doPost() method in your servlet?
>>
>> /Janne
>>
>> On 18 Oct 2008, at 19:01, Benedikt Mohrmann wrote:
>>
>>> Hi,
>>>
>>> thanks for the answer.
>>>
>>> Now I did the following:
>>> First of all I modified my plugin, which creates me my uploadform:
>>>        returnStringBuffer.append("<div class=\"wikiform\">");
>>>        returnStringBuffer.append("<form action=\"MyServlet\" name= 
>>> \"uploadForm\" accept-charset=\"UTF-8\" method=\"post\" enctype= 
>>> \"multipart/form-data\">");
>>>        returnStringBuffer.append("<input type=\"hidden\" name= 
>>> \"formname\" value=\"uploadForm\"/>");
>>>        returnStringBuffer.append("<input name=\"nbf_uploadInput\"  
>>> type=\"file\" value=\"\" /><input type=\"submit\" name= 
>>> \"nbf_uploadFile\" id=\"upload\" value=\"Hochladen\" />");
>>>        returnStringBuffer.append("</form></div>");                 
>>> return returnStringBuffer.toString();
>>>
>>> Then I wrote a servlet called MyServlet and created a .jar file  
>>> of it.
>>> I put this jar file in the "classes" directory of the JSPWiki and  
>>> modiefied the web.xml the following way:
>>> Added:
>>>  <servlet>
>>>    <servlet-name>MyServlet</servlet-name>
>>>    <servlet-class>MyServlet</servlet-class>
>>>  </servlet>
>>>  <servlet-mapping>
>>>    <servlet-name>MyServlet</servlet-name>
>>>    <url-pattern>/MyServlet</url-pattern>
>>>  </servlet-mapping>
>>>
>>> Now when I hit the submitbutton I get navigated to the page:
>>> http://localhost:8080/JSPWiki/MyServlet
>>>
>>> which seems to be wrong.
>>>
>>> In addition I got the following error message on this page:
>>>
>>>
>>>  HTTP Status 405 - HTTP method POST is not supported by this URL
>>>
>>> -------------------------------------------------------------------- 
>>> ----
>>>
>>> *type* Status report
>>>
>>> *message* _HTTP method POST is not supported by this URL_
>>>
>>> *description* _The specified HTTP method is not allowed for the  
>>> requested resource (HTTP method POST is not supported by this URL).
>>> _
>>>
>>> What am I doing wrong so far?
>>>
>>> Best regards
>>> Benedikt
>>>
>>>
>>>
>>>
>>> Janne Jalkanen schrieb:
>>>>
>>>> Ah yes, found the answer from the FAQ:
>>>>
>>>> "Why is parseRequest() returning no items?
>>>>     This most commonly happens when the request has already been  
>>>> parsed, or processed in some other way. Since the input stream  
>>>> has aleady been consumed by that earlier process, it is no  
>>>> longer available for parsing by Commons FileUpload. "
>>>>
>>>> Therefore, since JSPWiki has already parsed the request (e.g. by  
>>>> using request.getParameter()), FileUpload can no longer parse  
>>>> the request and therefore fails.  There is no way around this in  
>>>> a Plugin, I'm afraid...
>>>>
>>>> The only option is probably to create your own Servlet and send  
>>>> the request there.  Look how AttachmentServlet handles things,  
>>>> that should help you to construct your own Servlet to handle  
>>>> your own upload.  If you want to use WikiForms, you can use the  
>>>> "submit" -parameter of FormOpen to point at your own servlet.
>>>>
>>>> /Janne
>>>>
>>>> On Oct 14, 2008, at 16:41 , Benedikt Mohrmann wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I just tried another thing.
>>>>> I wrote a second plugin which contains the following code:
>>>>>    StringBuffer returnStringBuffer = new StringBuffer();
>>>>>
>>>>>    @Override
>>>>>    public String execute(WikiContext context, Map params)  
>>>>> throws PluginException {
>>>>>                          returnStringBuffer.append("<div class= 
>>>>> \"wikiform\">");
>>>>>        returnStringBuffer.append("<form action=\"Wiki.jsp? 
>>>>> page=MyTest\" name=\"uploadForm\" accept-charset=\"UTF-8\"  
>>>>> method=\"post\" enctype=\"multipart/form-data\">");
>>>>>        returnStringBuffer.append("<input type=\"hidden\" name= 
>>>>> \"formname\" value=\"uploadForm\"/>");
>>>>>        returnStringBuffer.append("<input name=\"nbf_uploadInput 
>>>>> \" type=\"file\" value=\"\" /><input type=\"submit\" name= 
>>>>> \"nbf_uploadFile\" id=\"upload\" value=\"Hochladen\" />");
>>>>>        returnStringBuffer.append("</form></ 
>>>>> div>");                return returnStringBuffer.toString();
>>>>>    }
>>>>>
>>>>> }
>>>>>
>>>>> I integrated the plugin into a WikiPage and in addition the  
>>>>> following:
>>>>> [{FormOutput form='uploadForm' handler='MyPlugin'}]
>>>>>
>>>>> When I hit the button there happens nothing again.
>>>>>
>>>>> Now when I change the sourcecode an write
>>>>> enctype=\"application/x-www-form-urlencoded\">" instead of  
>>>>> enctype=\"multipart/form-data\">"
>>>>>
>>>>> everything works fine again.
>>>>>
>>>>> Something is definetely not able to handle the other format.
>>>>>
>>>>> Any ideas?
>>>>>
>>>>> Best regards
>>>>> Benedikt
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Benedikt Mohrmann schrieb:
>>>>>> Hi,
>>>>>>
>>>>>> I definetely know that it is a problem with the  
>>>>>> MyFormOpenPlugin!!!
>>>>>>
>>>>>> No plugin gets activated, when I use the MyFormOpenPlugin.
>>>>>>
>>>>>> I just copied the FormOpen Plugin and changed the one line to  
>>>>>> get a "multipart/form-data".
>>>>>> In addition I deleted the following:
>>>>>>    private static org.apache.log4j.Logger log =
>>>>>>        org.apache.log4j.Logger.getLogger( MyFormOpen.class );
>>>>>>
>>>>>>   log.debug( "Previous FormInfo for this form was found in  
>>>>>> context." );
>>>>>>
>>>>>>
>>>>>> But I don`t think that this can be the problem.
>>>>>>
>>>>>> Is there any other way to get out of this mysery?
>>>>>>
>>>>>> Best regards
>>>>>> Benedikt
>>>>>>
>>>>>>
>>>>>> Benedikt Mohrmann schrieb:
>>>>>>> Hi,
>>>>>>>
>>>>>>> does anyone have a clue, how to solve this problem?
>>>>>>>
>>>>>>> Best regards
>>>>>>> Benedikt
>>>>>>>
>>>>>>>
>>>>>>> Benedikt Mohrmann schrieb:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> here is the resulting HTML code:
>>>>>>>>
>>>>>>>> <div class="wikiform">
>>>>>>>> <form action="Wiki.jsp?page=MyTest" name="uploadForm" accept- 
>>>>>>>> charset="UTF-8" method="post" enctype="multipart/form-data">
>>>>>>>>  <input type="hidden" name="formname" value="uploadForm"/>
>>>>>>>>
>>>>>>>> <input name='nbf_uploadInput' type='file' value=''/>
>>>>>>>>
>>>>>>>> </p>
>>>>>>>> <p />
>>>>>>>> <p><input name='nbf_uploadFile' type='submit' value='Upload'/>
>>>>>>>>
>>>>>>>> </form>
>>>>>>>> </div>
>>>>>>>>
>>>>>>>> Regards
>>>>>>>> Benedikt
>>>>>>>>
>>>>>>>>
>>>>>>>> Janne Jalkanen schrieb:
>>>>>>>>> And could you also provide the HTML code resulting from  
>>>>>>>>> this invocation?
>>>>>>>>>
>>>>>>>>> /Janne
>>>>>>>>>
>>>>>>>>> On 11 Oct 2008, at 20:37, Benedikt Mohrmann wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> the plugin should be activated by a click on the button.
>>>>>>>>>>
>>>>>>>>>> Here is the WikiPage
>>>>>>>>>>
>>>>>>>>>> [{FormSet form='uploadForm'}]
>>>>>>>>>> [{MyFormOpen form='uploadForm'}]
>>>>>>>>>> [{FormInput type='file' name='uploadInput'}]
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> [{FormInput type='submit' name='uploadFile' value='Upload'}]
>>>>>>>>>> [{FormOutput form='uploadForm' handler='MyPlugin'}]
>>>>>>>>>> [{FormClose}]
>>>>>>>>>>
>>>>>>>>>> Best regards
>>>>>>>>>> Benedikt
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Janne Jalkanen schrieb:
>>>>>>>>>>>
>>>>>>>>>>> And how do you use this on a page?
>>>>>>>>>>>
>>>>>>>>>>> /Janne
>>>>>>>>>>>
>>>>>>>>>>> On 11 Oct 2008, at 14:52, Benedikt Mohrmann wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> the plugin is quite easy:
>>>>>>>>>>>> public class MyPlugin implements WikiPlugin {
>>>>>>>>>>>>
>>>>>>>>>>>>    @Override
>>>>>>>>>>>>    public String execute(WikiContext context, Map  
>>>>>>>>>>>> params) throws PluginException {
>>>>>>>>>>>>              HttpServletRequest request =  
>>>>>>>>>>>> context.getHttpRequest();
>>>>>>>>>>>>        boolean isMultipart =  
>>>>>>>>>>>> ServletFileUpload.isMultipartContent(request);
>>>>>>>>>>>>              // Create a factory for disk-based file items
>>>>>>>>>>>>        FileItemFactory factory = new DiskFileItemFactory();
>>>>>>>>>>>>
>>>>>>>>>>>>        // Create a new file upload handler
>>>>>>>>>>>>        ServletFileUpload upload = new ServletFileUpload 
>>>>>>>>>>>> (factory);
>>>>>>>>>>>>
>>>>>>>>>>>>        // Parse the request
>>>>>>>>>>>>        List<FileItem> items = null;
>>>>>>>>>>>>        try {
>>>>>>>>>>>>            items = upload.parseRequest(request);
>>>>>>>>>>>>        } catch (Exception e) {
>>>>>>>>>>>>            // TODO Auto-generated catch block
>>>>>>>>>>>>                      return "BUG";
>>>>>>>>>>>>        }
>>>>>>>>>>>>              boolean empty = items.isEmpty();
>>>>>>>>>>>>        String valueOf = String.valueOf(empty);
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>        return valueOf + "Works";
>>>>>>>>>>>>    }
>>>>>>>>>>>> }
>>>>>>>>>>>>
>>>>>>>>>>>> As I said, when I hit the submitButton nothing happens.
>>>>>>>>>>>>
>>>>>>>>>>>> Best regards
>>>>>>>>>>>> Benedikt
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> jalkanen@ecyrd.com schrieb:
>>>>>>>>>>>>> Hi!
>>>>>>>>>>>>>
>>>>>>>>>>>>> I think we might need to see the code. Can you post it  
>>>>>>>>>>>>> to the list, please?
>>>>>>>>>>>>>
>>>>>>>>>>>>> /janne
>>>>>>>>>>>>>
>>>>>>>>>>>>> -- alkuper. viesti --
>>>>>>>>>>>>> Aihe: Re: Upload Question
>>>>>>>>>>>>> Lähettäjä: Benedikt Mohrmann <mohrmann@mail.upb.de>
>>>>>>>>>>>>> Päivämäärä: 11.10.2008 12:42
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>
>>>>>>>>>>>>> I did all this.
>>>>>>>>>>>>> The HTML output is how it should be, but the request is  
>>>>>>>>>>>>> not handled when I hit the button.
>>>>>>>>>>>>>
>>>>>>>>>>>>> The WikiSite:
>>>>>>>>>>>>> [{FormSet form='uploadForm'}]
>>>>>>>>>>>>> [{MyFormOpen form='uploadForm'}]
>>>>>>>>>>>>> [{FormInput type='file' name='uploadInput'}]
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> [{FormInput type='submit' name='uploadFile'  
>>>>>>>>>>>>> value='Upload'}]
>>>>>>>>>>>>> [{FormOutput form='uploadForm' handler='MyPlugin'}]
>>>>>>>>>>>>> [{FormClose}]
>>>>>>>>>>>>>
>>>>>>>>>>>>> To test it I wrote a plugin which justs returns "Works".
>>>>>>>>>>>>> Now when I switch to the normal FormOpen tag  
>>>>>>>>>>>>> ([{FormOpen form='uploadForm'}]) the output is "Works".
>>>>>>>>>>>>> When I use my own one, there is no output.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Any ideas, why this is not handled?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Best regards
>>>>>>>>>>>>> Benedikt
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Janne Jalkanen schrieb:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> They are real plugins.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I recommend that you copy FormOpen.java to  
>>>>>>>>>>>>>> MyFormOpen.java, rename the class, change the code,  
>>>>>>>>>>>>>> and then use [{MyFormOpen}] instead of [{FormOpen}] in  
>>>>>>>>>>>>>> the plugins that you need.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> You can easily write your own plugin which does what  
>>>>>>>>>>>>>> you said:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> package whatever.package.you.use;
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> public class MyPlugin implements WikiPlugin
>>>>>>>>>>>>>> {
>>>>>>>>>>>>>>    public String execute(WikiContext ctx, Map params)
>>>>>>>>>>>>>>    {
>>>>>>>>>>>>>>           returnStringBuffer.append("<div class= 
>>>>>>>>>>>>>> \"wikiform\">");
>>>>>>>>>>>>>>           returnStringBuffer.append("<form action= 
>>>>>>>>>>>>>> \"Wiki.jsp?page=MyTest\" name=\"uploadForm\" accept- 
>>>>>>>>>>>>>> charset=\"UTF-8\" method=\"post\"                    
>>>>>>>>>>>>>> enctype=\"multipart/form-data\">");
>>>>>>>>>>>>>>        returnStringBuffer.append("<input type=\"hidden 
>>>>>>>>>>>>>> \" name=\"formname\" value=\"uploadForm\"/>");
>>>>>>>>>>>>>>        returnStringBuffer.append("<input name= 
>>>>>>>>>>>>>> \"nbf_Datei\" type=\"file\"><input type=\"submit\"  
>>>>>>>>>>>>>> name=\"nbf_upload\" id=\"upload\" value=\"Hochladen\" / 
>>>>>>>>>>>>>> >");
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>       return returnStringBuffer.toString();
>>>>>>>>>>>>>>     }
>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> then use [{whatever.package.you.use.MyPlugin}] on a  
>>>>>>>>>>>>>> wikipage.  I don't know what it does, but it is easy :-)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> /Janne
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Oct 10, 2008, at 16:16 , Benedikt Mohrmann wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> the problem is that the Forms are directly in the  
>>>>>>>>>>>>>>> JSPWiki.jar file.
>>>>>>>>>>>>>>> Thus they are no real plugins I guess.
>>>>>>>>>>>>>>> I tried to change the FormOpen.java and inserted
>>>>>>>>>>>>>>>        tag.append( "\" method=\""+method+"\" enctype= 
>>>>>>>>>>>>>>> \"multipart/form-data\">\n" );
>>>>>>>>>>>>>>> then build the class file and just put it into the  
>>>>>>>>>>>>>>> JSPWiki.jar.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> As a result all the other plugins which use forms  
>>>>>>>>>>>>>>> were not working correctly (that was of course clear).
>>>>>>>>>>>>>>> But my Upload Plugin did not work, too.
>>>>>>>>>>>>>>> When I hit the submit button nothing happened.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Is there no possibility to insert a plugin which  
>>>>>>>>>>>>>>> creates HTML code the following way:
>>>>>>>>>>>>>>>        returnStringBuffer.append("<div class= 
>>>>>>>>>>>>>>> \"wikiform\">");
>>>>>>>>>>>>>>>        returnStringBuffer.append("<form action= 
>>>>>>>>>>>>>>> \"Wiki.jsp?page=MyTest\" name=\"uploadForm\" accept- 
>>>>>>>>>>>>>>> charset=\"UTF-8\" method=\"post\" enctype=\"multipart/ 
>>>>>>>>>>>>>>> form-data\">");
>>>>>>>>>>>>>>>        returnStringBuffer.append("<input type=\"hidden 
>>>>>>>>>>>>>>> \" name=\"formname\" value=\"uploadForm\"/>");
>>>>>>>>>>>>>>>        returnStringBuffer.append("<input name= 
>>>>>>>>>>>>>>> \"nbf_Datei\" type=\"file\"><input type=\"submit\"  
>>>>>>>>>>>>>>> name=\"nbf_upload\" id=\"upload\" value=\"Hochladen 
>>>>>>>>>>>>>>> \" />");
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Then just integrate the plugin into the WikiPage.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> And then put a second plugin via [{FormOutput  
>>>>>>>>>>>>>>> form='uploadForm' handler='MyPlugin'}] into the  
>>>>>>>>>>>>>>> WikiPage?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> At the moment this seems not to work, as nothing  
>>>>>>>>>>>>>>> happens when I click on the submit button.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Best regards
>>>>>>>>>>>>>>> Benedikt
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Janne Jalkanen schrieb:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Probably the quickest way for you now is to simply  
>>>>>>>>>>>>>>>> make a copy of the
>>>>>>>>>>>>>>>> relevant Form plugin, name it something else, and  
>>>>>>>>>>>>>>>> just change the
>>>>>>>>>>>>>>>> enctype.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Also please put in a JIRA request for the enctype to  
>>>>>>>>>>>>>>>> be changeable,
>>>>>>>>>>>>>>>> and we'll snatch it in either 2.8.1 or 3.0.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> /Janne
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Fri, Oct 10, 2008 at 10:50:32AM +0200, Benedikt  
>>>>>>>>>>>>>>>> Mohrmann wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> just checked it again.
>>>>>>>>>>>>>>>>> The problem is definetely the form:
>>>>>>>>>>>>>>>>> org.apache.commons.fileupload.FileUploadBase 
>>>>>>>>>>>>>>>>> $InvalidContentTypeException: the request doesn't  
>>>>>>>>>>>>>>>>> contain a multipart/form-data or multipart/mixed  
>>>>>>>>>>>>>>>>> stream, content type header is application/x-www- 
>>>>>>>>>>>>>>>>> form-urlencoded
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Pretty bad that you can not change the enctype.
>>>>>>>>>>>>>>>>> In the Wiki Src it is:
>>>>>>>>>>>>>>>>> tag.append( "\" method=\""+method+"\" enctype= 
>>>>>>>>>>>>>>>>> \"application/x-www-form-urlencoded\">\n" );
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Can't I just change this?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Another way could be to write a plugin with the  
>>>>>>>>>>>>>>>>> following code (snippet):
>>>>>>>>>>>>>>>>>        returnStringBuffer.append("<div class= 
>>>>>>>>>>>>>>>>> \"wikiform\">");
>>>>>>>>>>>>>>>>>        returnStringBuffer.append("<form action= 
>>>>>>>>>>>>>>>>> \"Wiki.jsp?page=MyTest\" name=\"uploadForm\" accept- 
>>>>>>>>>>>>>>>>> charset=\"UTF-8\" method=\"post\" enctype= 
>>>>>>>>>>>>>>>>> \"multipart/form-data\">");
>>>>>>>>>>>>>>>>>        returnStringBuffer.append("<input type= 
>>>>>>>>>>>>>>>>> \"hidden\" name=\"formname\" value=\"uploadForm\"/>");
>>>>>>>>>>>>>>>>>        returnStringBuffer.append("<input name= 
>>>>>>>>>>>>>>>>> \"nbz_Datei\" type=\"file\"><input type=\"submit\"  
>>>>>>>>>>>>>>>>> name=\"nbz_upload\" id=\"upload\" value=\"Hochladen 
>>>>>>>>>>>>>>>>> \" />");
>>>>>>>>>>>>>>>>>        returnStringBuffer.append("</form></div>");
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> This would create a form, but how can I tell the  
>>>>>>>>>>>>>>>>> Wiki which plugin to use, when the button is hit?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>>>>> Benedikt
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Janne Jalkanen schrieb:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I think it is important to look into the cause...  
>>>>>>>>>>>>>>>>>> The stack trace would be important, yes.  There  
>>>>>>>>>>>>>>>>>> could be many things failing.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> /Janne
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Oct 9, 2008, at 19:15 , Harry Metske wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I think so too (multipart/form-data), but can you  
>>>>>>>>>>>>>>>>>>> print the stacktrace just
>>>>>>>>>>>>>>>>>>> before returning " BUG" , maybe you'll get a clue  
>>>>>>>>>>>>>>>>>>> then ?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> The FormOpen class currently has a hardcoded
>>>>>>>>>>>>>>>>>>> "application/x-www-form-urlencoded", I think this  
>>>>>>>>>>>>>>>>>>> should be parameterizable
>>>>>>>>>>>>>>>>>>> with the current value as the default.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> regards,
>>>>>>>>>>>>>>>>>>> Harry
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> 2008/10/9 Benedikt Mohrmann <mohrmann@mail.upb.de>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> I tried a few things already, but did not get it  
>>>>>>>>>>>>>>>>>>>> to work so far.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> At first I created a new site, which contains:
>>>>>>>>>>>>>>>>>>>> [{FormSet form='searchForm'}]
>>>>>>>>>>>>>>>>>>>> [{FormOpen form='searchForm'}]
>>>>>>>>>>>>>>>>>>>> [{FormInput type='file' name='searchInput'}]
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> [{FormInput type='submit' name='submit'  
>>>>>>>>>>>>>>>>>>>> value='Submit'}]
>>>>>>>>>>>>>>>>>>>> [{FormClose}]
>>>>>>>>>>>>>>>>>>>> [{FormOutput form='searchForm' handler='MyTest2'}]
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Thus there is only a form where you can upload  
>>>>>>>>>>>>>>>>>>>> your data.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> The Plugin contains the following code (at this  
>>>>>>>>>>>>>>>>>>>> time really simple, just to
>>>>>>>>>>>>>>>>>>>> check if it works):
>>>>>>>>>>>>>>>>>>>> public class MyTest2 implements WikiPlugin {
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>  @Override
>>>>>>>>>>>>>>>>>>>>  public String execute(WikiContext context, Map  
>>>>>>>>>>>>>>>>>>>> params) throws
>>>>>>>>>>>>>>>>>>>> PluginException {
>>>>>>>>>>>>>>>>>>>>            HttpServletRequest request =  
>>>>>>>>>>>>>>>>>>>> context.getHttpRequest();
>>>>>>>>>>>>>>>>>>>>      boolean isMultipart =  
>>>>>>>>>>>>>>>>>>>> ServletFileUpload.isMultipartContent(request);
>>>>>>>>>>>>>>>>>>>>            // Create a factory for disk-based  
>>>>>>>>>>>>>>>>>>>> file items
>>>>>>>>>>>>>>>>>>>>      FileItemFactory factory = new  
>>>>>>>>>>>>>>>>>>>> DiskFileItemFactory();
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>      // Create a new file upload handler
>>>>>>>>>>>>>>>>>>>>      ServletFileUpload upload = new  
>>>>>>>>>>>>>>>>>>>> ServletFileUpload(factory);
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>      // Parse the request
>>>>>>>>>>>>>>>>>>>>      List<FileItem> items = null;
>>>>>>>>>>>>>>>>>>>>      try {
>>>>>>>>>>>>>>>>>>>>          items = upload.parseRequest(request);
>>>>>>>>>>>>>>>>>>>>      } catch (Exception e) {
>>>>>>>>>>>>>>>>>>>>          // TODO Auto-generated catch block
>>>>>>>>>>>>>>>>>>>>          return "BUG";
>>>>>>>>>>>>>>>>>>>>      }
>>>>>>>>>>>>>>>>>>>>      return "Works";
>>>>>>>>>>>>>>>>>>>>  }
>>>>>>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> So far I always get the "BUG" output when I  
>>>>>>>>>>>>>>>>>>>> choose a file and hit the
>>>>>>>>>>>>>>>>>>>> submitbutton.
>>>>>>>>>>>>>>>>>>>> One problem could be that when I take a look at  
>>>>>>>>>>>>>>>>>>>> the produced HTML code, the
>>>>>>>>>>>>>>>>>>>> form is introduced with:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> <form action="Wiki.jsp?page=MyTest"  
>>>>>>>>>>>>>>>>>>>> name="searchForm"
>>>>>>>>>>>>>>>>>>>> accept-charset="UTF-8" method="post"
>>>>>>>>>>>>>>>>>>>> enctype="application/x-www-form-urlencoded">
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> I think it should be the enctype: multipart/form- 
>>>>>>>>>>>>>>>>>>>> data
>>>>>>>>>>>>>>>>>>>> But I don't know if that is the point.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Any other ideas?
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Best regards
>>>>>>>>>>>>>>>>>>>> Benedikt
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Harry Metske schrieb:
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> my previous answer was a bit too much in a  
>>>>>>>>>>>>>>>>>>>>> hurry....
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> first your compile, Eclipse tells you there is  
>>>>>>>>>>>>>>>>>>>>> no method getHttpRequest
>>>>>>>>>>>>>>>>>>>>> for
>>>>>>>>>>>>>>>>>>>>> a wiki context, that is strange, looking at the  
>>>>>>>>>>>>>>>>>>>>> source it does have it :
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> ........
>>>>>>>>>>>>>>>>>>>>>   /**
>>>>>>>>>>>>>>>>>>>>>    *  If the request did originate from a HTTP  
>>>>>>>>>>>>>>>>>>>>> request,
>>>>>>>>>>>>>>>>>>>>>    *  then the HTTP request can be fetched  
>>>>>>>>>>>>>>>>>>>>> here.  However, it the request
>>>>>>>>>>>>>>>>>>>>>    *  did NOT originate from a HTTP request,  
>>>>>>>>>>>>>>>>>>>>> then this method will
>>>>>>>>>>>>>>>>>>>>>    *  return null, and YOU SHOULD CHECK FOR IT!
>>>>>>>>>>>>>>>>>>>>>    *
>>>>>>>>>>>>>>>>>>>>>    *  @return Null, if no HTTP request was done.
>>>>>>>>>>>>>>>>>>>>>    *  @since 2.0.13.
>>>>>>>>>>>>>>>>>>>>>    */
>>>>>>>>>>>>>>>>>>>>>   public HttpServletRequest getHttpRequest()
>>>>>>>>>>>>>>>>>>>>>   {
>>>>>>>>>>>>>>>>>>>>>       return m_request;
>>>>>>>>>>>>>>>>>>>>>   }
>>>>>>>>>>>>>>>>>>>>> .......
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> and if you can't compile it, I shouldn't even  
>>>>>>>>>>>>>>>>>>>>> try to run it.
>>>>>>>>>>>>>>>>>>>>> Maybe you can reply the complete source of your  
>>>>>>>>>>>>>>>>>>>>> plugin ?
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> regards,
>>>>>>>>>>>>>>>>>>>>> Harry
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>> 2008/10/8 Benedikt Mohrmann <mohrmann@mail.upb.de>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> thanks for your answer- I already had a look  
>>>>>>>>>>>>>>>>>>>>>> at commons fileupload.
>>>>>>>>>>>>>>>>>>>>>> But the problem is, when I use:
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> HttpServletRequest request =  
>>>>>>>>>>>>>>>>>>>>>> context.getHttpRequest();
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> JSPWiki tells me
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> HttpServletRequest cannot be resolved to a type
>>>>>>>>>>>>>>>>>>>>>> The type javax.servlet.http.HttpServletRequest  
>>>>>>>>>>>>>>>>>>>>>> cannot be resolved.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> In addition I am implementing my plugin in  
>>>>>>>>>>>>>>>>>>>>>> Eclipse and it tells me that
>>>>>>>>>>>>>>>>>>>>>> there is no method getHttpRequest for a wiki  
>>>>>>>>>>>>>>>>>>>>>> context.
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Best regards
>>>>>>>>>>>>>>>>>>>>>> Benedikt
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Harry Metske schrieb:
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>> Benedikt,
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> in your plugin you have access to the  
>>>>>>>>>>>>>>>>>>>>>>> HttpServletRequest (
>>>>>>>>>>>>>>>>>>>>>>> HttpServletRequest request =  
>>>>>>>>>>>>>>>>>>>>>>> context.getHttpRequest(); ) .
>>>>>>>>>>>>>>>>>>>>>>> Once you have this, I think you can use many  
>>>>>>>>>>>>>>>>>>>>>>> samples/tools to handle the
>>>>>>>>>>>>>>>>>>>>>>> uploaded file, but maybe the best one is  
>>>>>>>>>>>>>>>>>>>>>>> commons fileupload (
>>>>>>>>>>>>>>>>>>>>>>> http://commons.apache.org/fileupload/ 
>>>>>>>>>>>>>>>>>>>>>>> using.html), this binary jar is
>>>>>>>>>>>>>>>>>>>>>>> already
>>>>>>>>>>>>>>>>>>>>>>> in the JSPWiki distribution.
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> regards,
>>>>>>>>>>>>>>>>>>>>>>> Harry
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>> 2008/10/7 Benedikt Mohrmann  
>>>>>>>>>>>>>>>>>>>>>>> <mohrmann@mail.upb.de>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> my intention is to upload a file via  
>>>>>>>>>>>>>>>>>>>>>>>> JSPWiki, but not as an attachment.
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> I am trying to upload a file, thus I created  
>>>>>>>>>>>>>>>>>>>>>>>> a form containing a file
>>>>>>>>>>>>>>>>>>>>>>>> chooser and a submitbutton.
>>>>>>>>>>>>>>>>>>>>>>>> The goal is, that the input file is  
>>>>>>>>>>>>>>>>>>>>>>>> transferred to the server and then
>>>>>>>>>>>>>>>>>>>>>>>> handled by a plugin I wrote.
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> The plugin just puts the file as a  
>>>>>>>>>>>>>>>>>>>>>>>> Serializable into a database (which
>>>>>>>>>>>>>>>>>>>>>>>> already works, when I read a file from my  
>>>>>>>>>>>>>>>>>>>>>>>> harddisk).
>>>>>>>>>>>>>>>>>>>>>>>> But I am not yet not able to transfer the  
>>>>>>>>>>>>>>>>>>>>>>>> content of the file as a
>>>>>>>>>>>>>>>>>>>>>>>> stream
>>>>>>>>>>>>>>>>>>>>>>>> or something like that.
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Any experiences how this could work?
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>> Best regards
>>>>>>>>>>>>>>>>>>>>>>>> Benedikt
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>


Mime
View raw message