Re: multipart-request / file upload problem

2004-03-01 Thread Adam Hardy
I'm going to put this another way: what's the secret with file upload 
requests? I can't see my file parameter in the request parameters when I 
submit the form with the multipart-request.

Adam

On 02/29/2004 07:05 PM Adam Hardy wrote:
I use the Commons multipart request handler stuff to set up a 
DynaActionForm properly for my file upload so:

form-bean  name=linklibImportForm
  type=org.apache.struts.validator.DynaValidatorActionForm
  form-property name=bookmarksFile
type=org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFile/ 

/form-bean

which works fine, but in some circumstances I want to manually create 
this form, grab the file and save the DynaActionForm (in a filter). Like 
so:

ActionForm form =
  RequestUtils.createActionForm(request, actionMapping,
  moduleConfig, actionServlet);
form.reset(actionMapping, request);
BeanUtils.populate(form, request.getParameterMap());
But it isn't working. My file comes back as null. Anyone know why or 
have a solution?



--
struts 1.1 + tomcat 5.0.16 + java 1.4.2
Linux 2.4.20 Debian
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Re: multipart-request / file upload problem

2004-03-01 Thread Martin Cooper

Adam Hardy [EMAIL PROTECTED] wrote in message
news:[EMAIL PROTECTED]
 I'm going to put this another way: what's the secret with file upload
 requests? I can't see my file parameter in the request parameters when I
 submit the form with the multipart-request.

Ah, if I told you that, it wouldn't be a secret any more, now would it? ;-)

The biggest difference with multipart requests is that the request is
wrapped by Struts, so when you invoke a method on the request object, you
are actually invoking a method on the MultipartRequestWrapper class. This is
necessary so that calls to, for example, getParameter() go to Struts, which
parsed your request, rather than the container, which didn't.

In the code fragment below, I see you are invoking getParameterMap(). Note
that this is a Servlet 2.3 method. Since Struts 1.x is built for Servlet
2.2, that method is not implemented, and simply returns null.

Actually, there isn't a way to get the file items from the request itself,
since it doesn't have them. They're stored in the multipart request handler
itself. So, you would get the set of uploaded file items like this:

Hashtable fileItems =
formBean.getMultipartRequestHandler().getFileElements();

I'll be the first to admit that the current multipart implementation is a
little, um, arcane (not that I invented it ;). The plan is to completely
rewrite it for Struts 2.x, when we get there.

Hope this helps.

--
Martin Cooper



 Adam

 On 02/29/2004 07:05 PM Adam Hardy wrote:
  I use the Commons multipart request handler stuff to set up a
  DynaActionForm properly for my file upload so:
 
  form-bean  name=linklibImportForm
type=org.apache.struts.validator.DynaValidatorActionForm
form-property name=bookmarksFile
 
type=org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFil
e/
 
  /form-bean
 
  which works fine, but in some circumstances I want to manually create
  this form, grab the file and save the DynaActionForm (in a filter). Like
  so:
 
  ActionForm form =
RequestUtils.createActionForm(request, actionMapping,
moduleConfig, actionServlet);
  form.reset(actionMapping, request);
  BeanUtils.populate(form, request.getParameterMap());
 
  But it isn't working. My file comes back as null. Anyone know why or
  have a solution?
 


 -- 
 struts 1.1 + tomcat 5.0.16 + java 1.4.2
 Linux 2.4.20 Debian




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: multipart-request / file upload problem

2004-03-01 Thread Adam Hardy
Thanks for the expos. :)  So it's worse than I feared! Well, I shall 
just come up with a convincing error message in those situations where I 
would have needed it, rather than try to force a square peg somewhere it 
doesn't want to go.

Adam

On 03/01/2004 08:23 PM Martin Cooper wrote:
I'm going to put this another way: what's the secret with file upload
requests? I can't see my file parameter in the request parameters when I
submit the form with the multipart-request.


Ah, if I told you that, it wouldn't be a secret any more, now would it? ;-)

The biggest difference with multipart requests is that the request is
wrapped by Struts, so when you invoke a method on the request object, you
are actually invoking a method on the MultipartRequestWrapper class. This is
necessary so that calls to, for example, getParameter() go to Struts, which
parsed your request, rather than the container, which didn't.
In the code fragment below, I see you are invoking getParameterMap(). Note
that this is a Servlet 2.3 method. Since Struts 1.x is built for Servlet
2.2, that method is not implemented, and simply returns null.
Actually, there isn't a way to get the file items from the request itself,
since it doesn't have them. They're stored in the multipart request handler
itself. So, you would get the set of uploaded file items like this:
Hashtable fileItems =
formBean.getMultipartRequestHandler().getFileElements();
I'll be the first to admit that the current multipart implementation is a
little, um, arcane (not that I invented it ;). The plan is to completely
rewrite it for Struts 2.x, when we get there.
Hope this helps.

--
Martin Cooper


Adam

On 02/29/2004 07:05 PM Adam Hardy wrote:

I use the Commons multipart request handler stuff to set up a
DynaActionForm properly for my file upload so:
form-bean  name=linklibImportForm
 type=org.apache.struts.validator.DynaValidatorActionForm
 form-property name=bookmarksFile
type=org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFil
e/
/form-bean

which works fine, but in some circumstances I want to manually create
this form, grab the file and save the DynaActionForm (in a filter). Like
so:
ActionForm form =
 RequestUtils.createActionForm(request, actionMapping,
 moduleConfig, actionServlet);
form.reset(actionMapping, request);
BeanUtils.populate(form, request.getParameterMap());
But it isn't working. My file comes back as null. Anyone know why or
have a solution?


--
struts 1.1 + tomcat 5.0.16 + java 1.4.2
Linux 2.4.20 Debian
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


multipart-request / file upload problem

2004-02-29 Thread Adam Hardy
I use the Commons multipart request handler stuff to set up a 
DynaActionForm properly for my file upload so:

form-bean  name=linklibImportForm
  type=org.apache.struts.validator.DynaValidatorActionForm
  form-property name=bookmarksFile
type=org.apache.struts.upload.CommonsMultipartRequestHandler$CommonsFormFile/
/form-bean
which works fine, but in some circumstances I want to manually create 
this form, grab the file and save the DynaActionForm (in a filter). Like so:

ActionForm form =
  RequestUtils.createActionForm(request, actionMapping,
  moduleConfig, actionServlet);
form.reset(actionMapping, request);
BeanUtils.populate(form, request.getParameterMap());
But it isn't working. My file comes back as null. Anyone know why or 
have a solution?

--
struts 1.1 + tomcat 5.0.16 + java 1.4.2
Linux 2.4.20 Debian
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]