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:09:50 GMT

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