当前位置: 代码迷 >> Java Web开发 >> 啊正在学习ssh整合,写到文件上传下载出有关问题了,下载的代码如何写倒是错的
  详细解决方案

啊正在学习ssh整合,写到文件上传下载出有关问题了,下载的代码如何写倒是错的

热度:226   发布时间:2016-04-13 22:30:22.0
求救啊,正在学习ssh整合,写到文件上传下载出问题了,下载的代码怎么写倒是错的,
求救谁能给写一个下载的代码,最好带有注释
还有.struts.xml里面怎么配置,最好有配置,看了好多的代码.还是一头雾水
------解决思路----------------------
百度就有,不需要在这里来提问。 这里提问的,都是百度不好搜的,
------解决思路----------------------
这是下载,上传的比较简单你百度一下就可以
<action name="fileDownload" class="com.fsy.action.FileDownload">
<result name="success" type="stream">
<param name="contentType">application/x-msdownload;charset=ISO8859-1</param> 
<param name="contentDisposition">attachment;filename=${filename}</param>
<param name="inputName">fileDownload</param>
</result>
</action>
public class FileDownload extends ActionSupport {
private String filename;
public String getFilename() throws UnsupportedEncodingException {
return new String(filename.getBytes(),"iso8859-1");
}
public void setFilename(String filename) {
this.filename = ServletActionContext.getRequest().getParameter("filename");

}
public InputStream getFileDownload() {
filename = filename.substring(filename.lastIndexOf("/")+1);
return ServletActionContext.getServletContext().getResourceAsStream("upload/"+filename);
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
}
------解决思路----------------------
action提供文件下载:
第一步,action内容应该类似这样

public class OpenVPNDownloadAction extends WActionSopport {
private InputStream downloadStream;

public InputStream getdownloadStream() {
return this.downloadStream;
}

public String getFileName() {
return String.format("%s-%s.ovpn", this.type, this.ip);
}

@Override
public String execute() throws Exception {
        //将提供下载文件的InputStream赋值给downloadStream
this.vpnDownloadStream = ......
return SUCCESS;
}
}

第二步,配置struts.xml

<action name="DownloadAction" class=".....">
<result name="success" type="stream">
<param name="contentType">.....</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="inputName">downloadStream</param>
</result>
</action>

上面配置的result中contentType是返回给客户端告知文件类型;contentDisposition指定了下载文件的默认文件名,不指定则为请求的Action名字;inputName参数对应于Action的getDownloadStream方法

上传文件比较容易,页面表单添加一个<input type="file">,设置其name属性,在Action中,申明一个java.io.File类型的变量,并提供getter方法,名称与表单中input标签的name对应即可。