点击下载ajax方式请求服务器
struts2 的action配置package com.dms.action;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.PrintWriter;import org.apache.struts2.ServletActionContext;import com.dms.dao.ModelDao;
import com.dms.entity.Model;
import com.dms.util.OutUtil;
public class DownloadAction extends BaseAction{
private Model model;

private PrintWriter out = OutUtil.getOut();

private ModelDao modelDao = new ModelDao(); private InputStream is;

private String fileName;

public String download(){
try {
int id = model.getId();

String realPath = ServletActionContext.getServletContext().getRealPath("/upload");
String userFolder = "model_"+session.get("userId");
String fileName = modelDao.getModelById(id).getModelName();

String filePath = realPath + File.separatorChar +userFolder + File.separatorChar + fileName;

is = new FileInputStream(filePath);
//ServletActionContext.getServletContext().getResourceAsStream(filePath);

System.out.println(new File(filePath).length());
} catch (Exception e) {
e.printStackTrace();
}
return "success";
} public Model getModel() {
return model;
} public void setModel(Model model) {
this.model = model;
} public InputStream getIs() {
return is;
} public void setIs(InputStream is) {
this.is = is;
} public String getFileName() {
return fileName;
} public void setFileName(String fileName) {
this.fileName = fileName;
}

}我这样请求完服务器传回来is流 里边是.hsf格式的文件 在客户端怎么办 客户端ajax请求完相应到请求的地方了 然后就不知道怎么回事了 求指导extstruts

解决方案 »

  1.   

    直接设置响应response的两个属性
        Do %stream.SetAttribute("ContentType","application/vnd.ms-excel")
        Do %stream.SetAttribute("ContentDisposition","attachment;filename="_title_".xls" )
    这个是M语言,类似设置一下java
      

  2.   

    ajax接受不了2进制文件流,直接window.open打开url进行下载
      

  3.   


    不行啊 我下载的全是.hsf格式的文件 google浏览器可以这么做 IE这么做会在整个页面上显示乱码  我只能用IE 因为用了activeX