You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by "Serge A. Redchuk" <bi...@mail.ru> on 2002/02/22 09:17:54 UTC

PLEASE, HELP !!! upload problem

Hello All !

I use the Struts v.1.0.2

Unfortunatelly I can't realize file uploading.

And the most confusing that I have 2 different errors on different
files with the same code.

Here's my form:

<html:form action="/addImage.do" enctype="multipart/form-data" >
<html:hidden property="pkPartner" />
<html:file property="imgFile" />
<br>
<html:submit property="submit" value="Save" />
<html:reset/>
</html:form>

Here's form bean:
...
public final class ImagesPartnerForm extends ActionForm {
  private String pkPartner = null;
  private FormFile imgFile = null;
  ...
  public FormFile getImgFile(){
    return this.imgFile;
  }
  public void setImgFile( FormFile imgFile ){
    this.imgFile = imgFile;
  }
  public void reset( ActionMapping mapping, HttpServletRequest request ){
    pkPartner = (String)request.getAttribute( "pkPartner" );
    imgFile = null;
  }
...

Here's action that handles form data:
public final class AddImage extends ActionExt {
  public ActionForward perform( ActionMapping mapping, ActionForm form,
         HttpServletRequest request, HttpServletResponse response, String userName )
    throws IOException, ServletException
  {
    String subpath = "/partner";
    String targetDir = ResourceHandler.getProperty( "global",
      "pictures.dyn.abs-root" ) + subpath;
    String dbPath = ResourceHandler.getProperty( "global",
      "pictures.dyn.rel-root" ) + subpath;
    ImagesPartnerForm iform = (ImagesPartnerForm)form;
    FormFile ff = iform.getImgFile();
    //
    String name = ff.getFileName();
    String targetFile = targetDir + "/" + name;
    String dbFile = dbPath + "/" + name;
    // Save file to filesystem
    java.io.DataInputStream dis = new java.io.DataInputStream(
      ff.getInputStream() );
    java.io.DataOutputStream dos = new java.io.DataOutputStream(
      new java.io.FileOutputStream( targetFile ) );
    for( int i = 0; i < ff.getFileSize(); i++ ){
      dos.writeByte( dis.readByte() );
    }
    dos.flush();
    dos.close();
    dis.close();
    
    return new ActionForward( "/jsp/partner/test.jsp" );
  }
}

ERRORS:
0) short text file was uploaded without any corruption, but:

1) One jpeg file was uploaded, but had less size then source.

2) Other jpeg file uploading caused an exception:

javax.servlet.ServletException: IOException while reading file element: Premature end of stream while reading multipart request
        at org.apache.struts.upload.MultipartIterator.getNextElement(MultipartIterator.java:222)
        at org.apache.struts.upload.DiskMultipartRequestHandler.handleRequest(DiskMultipartRequestHandler.java:76)
        at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:735)
        at org.apache.struts.action.ActionServlet.processPopulate(ActionServlet.java:2061)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1564)
        at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Thanks Eddie.

Posted by Eddie Bush <ek...@swbell.net>.
Glad to have helped =)

----- Original Message -----
From: "Henry Lu" <zh...@umich.edu>
To: "Struts Users Mailing List" <st...@jakarta.apache.org>
Sent: Friday, February 22, 2002 2:01 PM
Subject: Re: Thanks Eddie.


> Thanks Eddie, it work fine now!
>
>
> --------------------------------------------------------------------------
-
> Henry Lu
> MCIT                                            phone: (734) 936-2063
> University of Michigan Medical Center           fax:   (734) 763-4372
>
> On Fri, 22 Feb 2002, Eddie Bush wrote:
>
> > I uploaded graphics just fine just now.  My code is slightly different
than
> > yours.  I simply call the getFileData() method of FormFile to return the
> > data, and write it all out at once.  Then flush the buffer and close the
> > file.
> >
> > Try something along the lines of:
> >
> > FormFile ff = ... get the FormFile field
> >
> > FileOutputStream fos = new FileOutputStream("/some/path/" +
> > ff.getFileName());
> >
> > fos.write(ff.getFileData());
> > fos.flush();
> > fos.close();
> >
> > If you still have problems let us know.  I have to warn you, however,
that
> > people don't seem to care about file uploads.  I asked for help and
never
> > got it.  Of course my mistakes were because I was new, and a small
amount of
> > experimentation got me where I needed to go, but it's still annoying to
be
> > totally ignored.
> >
> > Hope that helps!  Let us know if it does not.
> >
> > Eddie
> >
> > ----- Original Message -----
> > From: "Serge A. Redchuk" <bi...@mail.ru>
> > To: <st...@jakarta.apache.org>
> > Sent: Friday, February 22, 2002 2:17 AM
> > Subject: PLEASE, HELP !!! upload problem
> >
> >
> > > Hello All !
> > >
> > > I use the Struts v.1.0.2
> > >
> > > Unfortunatelly I can't realize file uploading.
> > >
> > > And the most confusing that I have 2 different errors on different
> > > files with the same code.
> > >
> > > Here's my form:
> > >
> > > <html:form action="/addImage.do" enctype="multipart/form-data" >
> > > <html:hidden property="pkPartner" />
> > > <html:file property="imgFile" />
> > > <br>
> > > <html:submit property="submit" value="Save" />
> > > <html:reset/>
> > > </html:form>
> > >
> > > Here's form bean:
> > > ...
> > > public final class ImagesPartnerForm extends ActionForm {
> > >   private String pkPartner = null;
> > >   private FormFile imgFile = null;
> > >   ...
> > >   public FormFile getImgFile(){
> > >     return this.imgFile;
> > >   }
> > >   public void setImgFile( FormFile imgFile ){
> > >     this.imgFile = imgFile;
> > >   }
> > >   public void reset( ActionMapping mapping, HttpServletRequest
request ){
> > >     pkPartner = (String)request.getAttribute( "pkPartner" );
> > >     imgFile = null;
> > >   }
> > > ...
> > >
> > > Here's action that handles form data:
> > > public final class AddImage extends ActionExt {
> > >   public ActionForward perform( ActionMapping mapping, ActionForm
form,
> > >          HttpServletRequest request, HttpServletResponse response,
String
> > userName )
> > >     throws IOException, ServletException
> > >   {
> > >     String subpath = "/partner";
> > >     String targetDir = ResourceHandler.getProperty( "global",
> > >       "pictures.dyn.abs-root" ) + subpath;
> > >     String dbPath = ResourceHandler.getProperty( "global",
> > >       "pictures.dyn.rel-root" ) + subpath;
> > >     ImagesPartnerForm iform = (ImagesPartnerForm)form;
> > >     FormFile ff = iform.getImgFile();
> > >     //
> > >     String name = ff.getFileName();
> > >     String targetFile = targetDir + "/" + name;
> > >     String dbFile = dbPath + "/" + name;
> > >     // Save file to filesystem
> > >     java.io.DataInputStream dis = new java.io.DataInputStream(
> > >       ff.getInputStream() );
> > >     java.io.DataOutputStream dos = new java.io.DataOutputStream(
> > >       new java.io.FileOutputStream( targetFile ) );
> > >     for( int i = 0; i < ff.getFileSize(); i++ ){
> > >       dos.writeByte( dis.readByte() );
> > >     }
> > >     dos.flush();
> > >     dos.close();
> > >     dis.close();
> > >
> > >     return new ActionForward( "/jsp/partner/test.jsp" );
> > >   }
> > > }
> > >
> > > ERRORS:
> > > 0) short text file was uploaded without any corruption, but:
> > >
> > > 1) One jpeg file was uploaded, but had less size then source.
> > >
> > > 2) Other jpeg file uploading caused an exception:
> > >
> > > javax.servlet.ServletException: IOException while reading file
element:
> > Premature end of stream while reading multipart request
> > >         at
> >
org.apache.struts.upload.MultipartIterator.getNextElement(MultipartIterator.
> > java:222)
> > >         at
> >
org.apache.struts.upload.DiskMultipartRequestHandler.handleRequest(DiskMulti
> > partRequestHandler.java:76)
> > >         at
> > org.apache.struts.util.RequestUtils.populate(RequestUtils.java:735)
> > >         at
> >
org.apache.struts.action.ActionServlet.processPopulate(ActionServlet.java:20
> > 61)
> > >         at
> > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1564)
> > >         at
> > org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
> > >         at
javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> > >         at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> > <ma...@jakarta.apache.org>
> > > For additional commands, e-mail:
> > <ma...@jakarta.apache.org>
> > >
> >
> >
> > --
> > To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
> > For additional commands, e-mail:
<ma...@jakarta.apache.org>
> >
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: Thanks Eddie.

Posted by Henry Lu <zh...@umich.edu>.
Thanks Eddie, it work fine now!


---------------------------------------------------------------------------
Henry Lu
MCIT                                            phone: (734) 936-2063
University of Michigan Medical Center           fax:   (734) 763-4372

On Fri, 22 Feb 2002, Eddie Bush wrote:

> I uploaded graphics just fine just now.  My code is slightly different than
> yours.  I simply call the getFileData() method of FormFile to return the
> data, and write it all out at once.  Then flush the buffer and close the
> file.
>
> Try something along the lines of:
>
> FormFile ff = ... get the FormFile field
>
> FileOutputStream fos = new FileOutputStream("/some/path/" +
> ff.getFileName());
>
> fos.write(ff.getFileData());
> fos.flush();
> fos.close();
>
> If you still have problems let us know.  I have to warn you, however, that
> people don't seem to care about file uploads.  I asked for help and never
> got it.  Of course my mistakes were because I was new, and a small amount of
> experimentation got me where I needed to go, but it's still annoying to be
> totally ignored.
>
> Hope that helps!  Let us know if it does not.
>
> Eddie
>
> ----- Original Message -----
> From: "Serge A. Redchuk" <bi...@mail.ru>
> To: <st...@jakarta.apache.org>
> Sent: Friday, February 22, 2002 2:17 AM
> Subject: PLEASE, HELP !!! upload problem
>
>
> > Hello All !
> >
> > I use the Struts v.1.0.2
> >
> > Unfortunatelly I can't realize file uploading.
> >
> > And the most confusing that I have 2 different errors on different
> > files with the same code.
> >
> > Here's my form:
> >
> > <html:form action="/addImage.do" enctype="multipart/form-data" >
> > <html:hidden property="pkPartner" />
> > <html:file property="imgFile" />
> > <br>
> > <html:submit property="submit" value="Save" />
> > <html:reset/>
> > </html:form>
> >
> > Here's form bean:
> > ...
> > public final class ImagesPartnerForm extends ActionForm {
> >   private String pkPartner = null;
> >   private FormFile imgFile = null;
> >   ...
> >   public FormFile getImgFile(){
> >     return this.imgFile;
> >   }
> >   public void setImgFile( FormFile imgFile ){
> >     this.imgFile = imgFile;
> >   }
> >   public void reset( ActionMapping mapping, HttpServletRequest request ){
> >     pkPartner = (String)request.getAttribute( "pkPartner" );
> >     imgFile = null;
> >   }
> > ...
> >
> > Here's action that handles form data:
> > public final class AddImage extends ActionExt {
> >   public ActionForward perform( ActionMapping mapping, ActionForm form,
> >          HttpServletRequest request, HttpServletResponse response, String
> userName )
> >     throws IOException, ServletException
> >   {
> >     String subpath = "/partner";
> >     String targetDir = ResourceHandler.getProperty( "global",
> >       "pictures.dyn.abs-root" ) + subpath;
> >     String dbPath = ResourceHandler.getProperty( "global",
> >       "pictures.dyn.rel-root" ) + subpath;
> >     ImagesPartnerForm iform = (ImagesPartnerForm)form;
> >     FormFile ff = iform.getImgFile();
> >     //
> >     String name = ff.getFileName();
> >     String targetFile = targetDir + "/" + name;
> >     String dbFile = dbPath + "/" + name;
> >     // Save file to filesystem
> >     java.io.DataInputStream dis = new java.io.DataInputStream(
> >       ff.getInputStream() );
> >     java.io.DataOutputStream dos = new java.io.DataOutputStream(
> >       new java.io.FileOutputStream( targetFile ) );
> >     for( int i = 0; i < ff.getFileSize(); i++ ){
> >       dos.writeByte( dis.readByte() );
> >     }
> >     dos.flush();
> >     dos.close();
> >     dis.close();
> >
> >     return new ActionForward( "/jsp/partner/test.jsp" );
> >   }
> > }
> >
> > ERRORS:
> > 0) short text file was uploaded without any corruption, but:
> >
> > 1) One jpeg file was uploaded, but had less size then source.
> >
> > 2) Other jpeg file uploading caused an exception:
> >
> > javax.servlet.ServletException: IOException while reading file element:
> Premature end of stream while reading multipart request
> >         at
> org.apache.struts.upload.MultipartIterator.getNextElement(MultipartIterator.
> java:222)
> >         at
> org.apache.struts.upload.DiskMultipartRequestHandler.handleRequest(DiskMulti
> partRequestHandler.java:76)
> >         at
> org.apache.struts.util.RequestUtils.populate(RequestUtils.java:735)
> >         at
> org.apache.struts.action.ActionServlet.processPopulate(ActionServlet.java:20
> 61)
> >         at
> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1564)
> >         at
> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> >         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> >
> >
> > --
> > To unsubscribe, e-mail:
> <ma...@jakarta.apache.org>
> > For additional commands, e-mail:
> <ma...@jakarta.apache.org>
> >
>
>
> --
> To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
> For additional commands, e-mail: <ma...@jakarta.apache.org>
>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


Re: PLEASE, HELP !!! upload problem

Posted by Eddie Bush <ek...@swbell.net>.
I uploaded graphics just fine just now.  My code is slightly different than
yours.  I simply call the getFileData() method of FormFile to return the
data, and write it all out at once.  Then flush the buffer and close the
file.

Try something along the lines of:

FormFile ff = ... get the FormFile field

FileOutputStream fos = new FileOutputStream("/some/path/" +
ff.getFileName());

fos.write(ff.getFileData());
fos.flush();
fos.close();

If you still have problems let us know.  I have to warn you, however, that
people don't seem to care about file uploads.  I asked for help and never
got it.  Of course my mistakes were because I was new, and a small amount of
experimentation got me where I needed to go, but it's still annoying to be
totally ignored.

Hope that helps!  Let us know if it does not.

Eddie

----- Original Message -----
From: "Serge A. Redchuk" <bi...@mail.ru>
To: <st...@jakarta.apache.org>
Sent: Friday, February 22, 2002 2:17 AM
Subject: PLEASE, HELP !!! upload problem


> Hello All !
>
> I use the Struts v.1.0.2
>
> Unfortunatelly I can't realize file uploading.
>
> And the most confusing that I have 2 different errors on different
> files with the same code.
>
> Here's my form:
>
> <html:form action="/addImage.do" enctype="multipart/form-data" >
> <html:hidden property="pkPartner" />
> <html:file property="imgFile" />
> <br>
> <html:submit property="submit" value="Save" />
> <html:reset/>
> </html:form>
>
> Here's form bean:
> ...
> public final class ImagesPartnerForm extends ActionForm {
>   private String pkPartner = null;
>   private FormFile imgFile = null;
>   ...
>   public FormFile getImgFile(){
>     return this.imgFile;
>   }
>   public void setImgFile( FormFile imgFile ){
>     this.imgFile = imgFile;
>   }
>   public void reset( ActionMapping mapping, HttpServletRequest request ){
>     pkPartner = (String)request.getAttribute( "pkPartner" );
>     imgFile = null;
>   }
> ...
>
> Here's action that handles form data:
> public final class AddImage extends ActionExt {
>   public ActionForward perform( ActionMapping mapping, ActionForm form,
>          HttpServletRequest request, HttpServletResponse response, String
userName )
>     throws IOException, ServletException
>   {
>     String subpath = "/partner";
>     String targetDir = ResourceHandler.getProperty( "global",
>       "pictures.dyn.abs-root" ) + subpath;
>     String dbPath = ResourceHandler.getProperty( "global",
>       "pictures.dyn.rel-root" ) + subpath;
>     ImagesPartnerForm iform = (ImagesPartnerForm)form;
>     FormFile ff = iform.getImgFile();
>     //
>     String name = ff.getFileName();
>     String targetFile = targetDir + "/" + name;
>     String dbFile = dbPath + "/" + name;
>     // Save file to filesystem
>     java.io.DataInputStream dis = new java.io.DataInputStream(
>       ff.getInputStream() );
>     java.io.DataOutputStream dos = new java.io.DataOutputStream(
>       new java.io.FileOutputStream( targetFile ) );
>     for( int i = 0; i < ff.getFileSize(); i++ ){
>       dos.writeByte( dis.readByte() );
>     }
>     dos.flush();
>     dos.close();
>     dis.close();
>
>     return new ActionForward( "/jsp/partner/test.jsp" );
>   }
> }
>
> ERRORS:
> 0) short text file was uploaded without any corruption, but:
>
> 1) One jpeg file was uploaded, but had less size then source.
>
> 2) Other jpeg file uploading caused an exception:
>
> javax.servlet.ServletException: IOException while reading file element:
Premature end of stream while reading multipart request
>         at
org.apache.struts.upload.MultipartIterator.getNextElement(MultipartIterator.
java:222)
>         at
org.apache.struts.upload.DiskMultipartRequestHandler.handleRequest(DiskMulti
partRequestHandler.java:76)
>         at
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:735)
>         at
org.apache.struts.action.ActionServlet.processPopulate(ActionServlet.java:20
61)
>         at
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1564)
>         at
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>
>
> --
> To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
> For additional commands, e-mail:
<ma...@jakarta.apache.org>
>


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>