jspwiki-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Harry Metske" <harry.met...@gmail.com>
Subject Re: Upload Question
Date Fri, 10 Oct 2008 11:36:59 GMT
Benedikt,

I think JSPWiki should offer the option to specify the enctype for the form,
as I suggested yesterday.
Can you file a JIRA issue ( https://issues.apache.org/jira/browse/JSPWIKI )
for this ?

regards,
Harry

2008/10/10 Benedikt Mohrmann <mohrmann@mail.upb.de>

> 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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message