Using the "stream" result is the canonical way to download files in S2.

It's not clear to me what you're trying to do with the DownloadInterceptor class, which looks like an interceptor, but extends a result. In most circumstances there should be no need to create an interceptor for downloading files.

Maybe the "stream" result docs will help. IIRC there's also a download example in showcase (could be wrong about that).

http://struts.apache.org/2.x/docs/stream-result.html

Dave

Niklas Johansson wrote:
Hello,

I am trying to create an application for the mobile phone from which you can download a Java ME application.
I have gotten so far that I can download the .jad file but the only thing that 
happens is that the content it is presented on the screen like this:
MIDlet-1: WLListenerMIDlet,,WLListenerMIDlet
MIDlet-Jar-Size: 44641
MIDlet-Jar-URL: MobileTrainer.jar
MIDlet-Name: MobileTrainer
MIDlet-Vendor: Vendor
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.1

I.e, the actual application (.jar) is not downloaded. The URL when this is presented is ending with "downloadMobileTrainer.action", i.e. not the actual file. When accessing the .jad file directly it works.
I am in a need of help because I am stuck and are getting no further. I also 
wonder if this is the correct way of doing it, if it is possible at all
using StreamResult for my purpose. I would really like to use Struts2 built in feature for this if possible. Here is my code:
My download form in the jsp page:

        
                                
                
        


struts.xml:


text/vnd.sun.j2me.app-descriptor ../../jsp/mobile/error.jsp



Extended StreamResult class:

public class DownloadInterceptor extends StreamResult{
        
                   protected void doExecute(String finalLocation, 
ActionInvocation invocation)
                   throws Exception {

                 String downloadedFileName = "MobileTraining.jad";
contentDisposition = "filename=\"MobileTraining.jad"; contentLength = ""+ invocation.getStack().findValue(conditionalParse("size", invocation)); // contentType = "text/vnd.sun.j2me.app-descriptor"; super.doExecute(finalLocation, invocation);

        }
}

My action class:


              public class DownloadMTAction  extends ActionSupport {
private File mobileTrainer;
              private String contentType;
              private String filename;

              private InputStream inputStream;

              public InputStream getInputStream()
{ try{ inputStream = new FileInputStream(new File("C:\\\\Users\\Niklas\\Documents\\JavaMESDKProjects\\MobileTrainer\\dist\\MobileTrainer.jad"));
                  }catch(Exception e){
                          System.out.println("Error in DownladMTAction " + 
e.getMessage());
                          e.printStackTrace();
                  }return inputStream;
              }
public void setInputStream(InputStream inputStream){ this.inputStream = inputStream; } public void setMobileTrainer(File mobileTrainer) {
                 this.mobileTrainer = mobileTrainer;
              }
        
              public void setMobileTrainerContentType(String contentType) {
                 this.contentType = contentType;
              }

              public void setMobileTrainerFileName(String filename) {
                 this.filename = filename;
              }

              public String execute() {
this.inputStream = getInputStream();

                  if(inputStream !=null)
                  {
return Action.SUCCESS;

                  }
                  else
{ return Action.ERROR; } }
}

I have tried to set the content-type in both my struts.xml file and the extended StreamResult class above (now commented out there).
Thank you in advance!

Regards,
Niklas



_________________________________________________________________
Invite your mail contacts to join your friends list with Windows Live Spaces. 
It's easy!
http://spaces.live.com/spacesapi.aspx?wx_action=create&wx_url=/friends.aspx&mkt=en-us
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org




---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to