【问题标题】:stream video from struts2 action multiple contentType?从struts2动作多个contentType流视频?
【发布时间】:2013-04-24 05:53:05
【问题描述】:

我正在尝试播放视频文件,因为我的操作 contentType 设置为

应用程序/八位字节流

现在如果我将其更改为音频/mpeg,则用户无法下载其他类型的文件。我想简单地知道我们可以设置多个内容类型,如果可以的话?如果不可能,在用户可以上传和下载任何类型的文件的情况下我应该怎么做。

【问题讨论】:

    标签: java struts2 mime-types


    【解决方案1】:

    当然可以。

    您必须从 Action 中输出 Stream Result type,并指定 parametric 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 部分以指定何时必须将文件打开为attachment(要求下载)或inline(在浏览器中打开)。

    【讨论】:

    • byte[] yourContent = loadTheContentInSomeWay();我不明白
    • 当我将视频(Sample.mp4)放在 Eclipse 中的 Web 内容下而不是系统位置时,这是有效的
    • @srinivasgowda 您需要一种从您拥有的源加载字节 [] 的方法:从文件、数据库、服务、队列、ecc ......因为它是与此答案无关,我将其包装在一个名为 loadTheContentInSomeWay(); 的假方法中。几乎不言自明,我希望(d):)
    • 你能看到这个问题告诉我哪里需要纠正stackoverflow.com/questions/44126896/…
    猜你喜欢
    • 1970-01-01
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多