commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tony Yat-Tung Cheung <tony.che...@asiayeah.com>
Subject Re: Using FileUpload to send an e-mail with attachment with JavaMail
Date Wed, 03 Mar 2004 08:25:16 GMT
Hi Martin Cooper,

Thanks. It works perfectly.

The only minor issue is that I have to put MyDefaultFileItem in the same 
package as the DefaultFileItem, since the only constructor for 
DefaultFileItem has a package scope.

Thanks again.

Tony Cheung

Martin Cooper wrote:

>On Thu, 26 Feb 2004, Tony Yat-Tung Cheung wrote:
>
>  
>
>>Hi,
>>
>>I am trying to make a servlet to receive a file with FileUpload, and
>>then send out an e-mail with the received file as an attachment.
>>
>>The FileItem does not provide a way to get a DataSource out of it, which
>>is required by the JavaMail's MimeBodyPart.
>>
>>Is there any way?
>>
>>The FileItem's API documentations seem to hint the solution, but I do
>>not quite get the idea.
>>"While this interface does not extend javax.activation.DataSource per se
>>(to avoid a seldom used dependency), several of the defined methods are
>>specifically defined with the same signatures as methods in that
>>interface. This allows an implementation of this interface to also
>>implement javax.activation.DataSource with minimal additional work."
>>
>>Do we have an easy solution here? I think it is one of the common
>>applications of the commons-fileupload.
>>    
>>
>
>I disagree that it's common, especially given that you're the first to
>ask, but it is simple to accomplish. ;-)
>
>First, you'll want a class that implements DataSource. Just add it to
>DefaultFileItem:
>
>public class MyDefaultFileItem extends DefaultFileItem
>                               implements DataSource {
>    // Add any DataSource methods that DefaultFileItem doesn't
>    // already implement
>}
>
>Now you need to get FileUpload to use this new class. That means you need
>a factory:
>
>public class MyDefaultFileItemFactory extends DefaultFileItemFactory {
>    public FileItem createItem(...) {
>        // Basically, just copy the one from the base class, but make
>        // it instantiate your new class, above, instead of the default.
>    }
>}
>
>You're almost done. Now all you need to do is construct your FileUpload
>class and specify your own factory:
>
>    DiskFileUpload upload = new DiskFileUpload(
>            new MyDefaultFileItemFactory());
>
>That's it. Now the file items you get back from FileUpload will be of your
>own class, and so implement DataSource.
>
>--
>Martin Cooper
>
>
>  
>
>>Thank you very much.
>>
>>Best Regards,
>>Tony Cheung
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: commons-user-help@jakarta.apache.org
>>
>>
>>    
>>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: commons-user-help@jakarta.apache.org
>  
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message