jspwiki-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benedikt Mohrmann <mohrm...@mail.upb.de>
Subject Re: VS: Re: Upload Question
Date Sat, 18 Oct 2008 16:18:09 GMT
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