下载的附件未显示正确的扩展名

时间:2014-09-15 07:15:36

标签: java postgresql struts2 download attachment

我使用postgresql作为后端。我保存了附件& case_attachments表中的附件标题。 当我点击下载附件时,它会下载它。但附件名称就是这样 downloadAttachFile ,类型为操作。我将保存多种类型的附件,如jpg,pdf,doc等。因此,在下载时,重要的是文件名&扩展是正确的。

这是我的struts.xml

        <action name="downloadAttachFile" class="abc.actions.mypackage" method="downloadAttachFile">
        <result name="success" type="stream">
        <param name="contentType">application/octet-stream/text/plain/doc</param>
        <param name="inputName">fileInputStream</param>
        <param name="contentDisposition">attachment;filename=%{AttachFileName}</param>
        <param name="bufferSize">1024</param>           
        </result>               
    </action> 

动作方法

    public String downloadAttachFile() throws FileNotFoundException {
    String AttachFileName = ServletActionContext.getRequest().getParameter("myFileFileName");
    fileInputStream = new FileInputStream(new File(AttachFileName));
    return SUCCESS;
}

当我右键单击并使用正确的工具将其打开时,它会正确打开。所以这里唯一的问题是名称&amp;扩展类型。

1 个答案:

答案 0 :(得分:1)

目前尚不清楚为什么,如果您从数据库中检索它,您正在从请求中读取它... btw:

  1. 你的action属性必须是私有的,在类级别(并没有像你那样在方法级别声明),使用getter,并以小写字符开头以遵循约定:

    private String attachFileName;
    
    public String getAttachFileName(){
        return attachFileName;
    }
    
    public String downloadAttachFile() throws FileNotFoundException {
        attachFileName = ServletActionContext.getRequest().getParameter("myFileFileName");
        fileInputStream = new FileInputStream(new File(AttachFileName));
        return SUCCESS;
    }
    
  2. 您需要存储,检索和设置真实,正确的contentType。这样:

    <param name="contentType">application/octet-stream/text/plain/doc</param>
    

    是一个怪物,可能会将您的浏览器变成噩梦发生器。