2013-04-30 50 views
1

我試圖播放視頻文件時,我的行動的contentType設置爲來自struts2的流視頻action multiple contentType?

應用程序/八位字節流

現在,如果我將其更改爲音頻/ MPEG,那麼用戶不能下載其他類型

的文件。我想知道我們是否可以設置多個內容類型?如果無法在用戶可以上傳和下載任何類型的文件的情況下做什麼。

回答

1

當然可以。

必須輸出的Stream Result type從你的行動,並指定參數的contentType,例如:

struts.xml的

<result name="success" type="stream"> 
    <param name="contentType">${yourContentType}</param> 
    <param name="inputName">inputStream</param> 
    <param name="contentDisposition">attachment;filename="${yourFileName}"</param> 
    <param name="bufferSize">1024</param> 
</result> 

行動

@Getter @Setter private InputStream inputStream; 
@Getter private String yourContentType; 
@Getter private String yourFileName; 

public String execute() throws Exception { 

    yourContentType = "audio/mpeg"; 
    yourFileName = "yourStuff.mp3"; 
    byte[] yourContent = loadTheContentInSomeWay(); 

    setInputStream(new ByteArrayInputStream(yourContent));   

    return SUCCESS; 
} 

你可以參數化contentDisposition部分以指定w當一個文件必須根據你的需要打開爲attachment(請求下載)或inline(在瀏覽器中打開)。

+0

byte [] yourContent = loadTheContentInSomeWay();我不明白 – 2017-05-05 06:25:11

+0

這是工作時,我把視頻(Sample.mp4)下的Web內容在日食但不是系統位置 – 2017-05-05 06:27:04

+0

@srinivasgowda你需要一種方法來從你有的來源加載你的byte []:從文件,從數據庫,從服務,從隊列,ecc ....因爲它與這個答案無關,我已經包裝它一個名爲'loadTheContentInSomeWay();'的假方法。幾乎不言自明,我希望(四):) – 2017-05-05 07:38:50