如题,我在tomcat里面配置了虚拟目录,用struts2下载虚拟目录里面的文件,
tomcat设置
<Context path="/data1" docBase="F:\" debug="5" crossContext="true" reloadable="true"/>
struts2配置action<action name="softwareDownloadAction" class="com.yufeng.action.SoftwareDownAction">
<result name="success" type="stream">
<param name="contentType">application/octet-stream;charset=UTF-8</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
</result>
</action>action方法
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;import javax.servlet.ServletContext;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class SoftwareDownAction extends ActionSupport {
private String fileName;

@Override
public String execute() throws Exception {
return SUCCESS;
}

public InputStream getInputStream() throws Exception
{
ServletContext servletContext = ServletActionContext.getServletContext();
return servletContext.getResourceAsStream(fileName);
}
    public String getDownloadFileName() throws Exception {   
  
        String downFileName = fileName;           
        return java.net.URLEncoder.encode(downFileName, "UTF-8");   
    }
    

public String getFileName() {
return fileName;
} public void setFileName(String fileName) {
this.fileName = fileName;
}
}
<a href="softwareDownloadAction.action?fileName=data1/test/xxxx.rar target="_blank">立即下载</a>
这样配置的,不能下载,但是如果放到项目里面,不用虚拟目录就可以下载。
请高手们帮帮忙

解决方案 »

  1.   

    <a href="softwareDownloadAction.action?fileName=data1/test/xxxx.rar target="_blank">立即下载</a>
    <a href="softwareDownloadAction.action?fileName=F:/data1/test/xxxx.rar target="_blank">立即下载</a>
      

  2.   

    <a href="softwareDownloadAction.action?fileName=data1/test/xxxx.rar target="_blank">立即下载</a>⇒<a href="softwareDownloadAction.action?fileName=F:/data1/test/xxxx.rar target="_blank">立即下载</a>