2013-04-30 3 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(); я не понял –

+0

это работает, когда я помещаю видео (Sample.mp4) в веб-контент в eclipse, но не в системное расположение –

+0

@srinivasgowda Вам нужно способ загрузить ваш байт [] из источника, который у вас есть: из файла, из базы данных, из службы, из очереди, ecc .... Поскольку это не относится к этому ответу, я завернул его в поддельный метод, называемый loadTontInInomeWay(); '. Довольно много объяснений, надеюсь (d) :) –