2012-08-01 16 views
5

İnsanların gerekli dosyayı DB'de belirtilen konumlarından Yerellerine indirecekleri bir uygulama geliştiriyorum. Dosyayı sunucudan indirmek için 2. destek kullandım. Dosyayı herhangi bir istisna olmadan indirebilir ve mükemmel çalışır. Ancak, indirdiğim dosyalar struts.xml dosyasında belirtilen dosya adına sahip, indirdiğim dosya adı olmasını istiyorum. örnek orijinal dosya adı ise struts.pdf, ben bunu önlemek ve aşağıdaki gibi gerçek dosya ileStruts 2 İndir - Dosya adını dinamik olarak nasıl yapılandırabilirim?

Benim struts.xml yapılandırmasını dosyasını indirmek için nasıl download.pdf olarak indirmeden am

<action name="download" class="action.DownloadAction"> 
     <result name="success" type="stream"> 
      <param name="contentType">application/octet-stream</param> 
      <param name="inputName">fileInputStream</param> 
      <param name="contentDisposition">attachment;filename="download.log"</param> 
      <param name="bufferSize">1024</param> 
     </result> 
     <result name="error">/live/useradminerror.jsp</result> 
    </action> 

Ve UI geliştirmek için struts2-jquery kullanarak bahsetmeyi unuttum. Projemimin çok kritik aşamasında olduğum için lütfen bana yardımcı olun.

cevap

11

ben bu kolayca

class MyFileDownloadAction extends ActionSupport{ 

    private String fileName; 
    // getter and setter 

    public String fileDownload() throws exception{ 
     // file download logic 
     fileName ="abc" // can set name dynamic from DB 
    } 

} 

<action name="download" class="action.DownloadAction"> 
     <result name="success" type="stream"> 
      <param name="contentType">application/octet-stream</param> 
      <param name="inputName">fileInputStream</param> 
      <param name="contentDisposition">attachment;filename="${filename}"</param> 
      <param name="bufferSize">1024</param> 
     </result> 
     <result name="error">/live/useradminerror.jsp</result> 
    </action> 

Sen gibi size eylem sınıfından tüm bu parametreler geçen yapabilirsiniz durumda olup olmadığını, sizin DB saklanan ediliyor dosyayı geçirmek istediğiniz doğru duyuyorum EĞER struts.xml sınıfınızda her bir parametreyi dinamik olarak iletebilir. Bu yardımcı olacaktır Bu dosya adınızı XML

+0

Yanıt için teşekkürler, veritabanında tam olarak aynı adı indirir. – Esh

+1

evet, bu durumda, bu durumda eylem adınız –

+0

çalışma sınıfınızdan çalışma zamanında geçtiğiniz için teşekkür ederiz Umesh, dosyayı gerçek dosya adı – Esh

1

'da nasıl kullanacağınız. Notlarda ek açıklamalar için aynıdır. Çözüm çok yardımcı oldu. Teşekkür ederim. Benim için "contentType" pek bir fark yaratmadı.

@Action(value = "/download", results = { @Result(name = "success", type = "stream", 
params= {"contentType", "application/octet-stream", "inputName","fileInputStream",  
"contentDisposition","attachment; filename=\"${fileName}\"", "bufferSize", "1024" }) 
}) 
İlgili konular