您的位置:首页 > 理论基础 > 计算机网络

java使用http下载文件

2016-09-14 18:13 260 查看
package com.wenku.action;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import com.common.util.ConstData;

import com.common.util.MyConfig;

import com.common.util.Util;

import com.wenku.entity.MyWenKu;

import com.wenku.service.WenKuService;

public class DownAction extends Action{

 public ActionForward execute(ActionMapping mapping, ActionForm form,

   HttpServletRequest request, HttpServletResponse response)throws IOException,ServletException{

  String guid=request.getParameter("guid");

  ServletOutputStream out = null;

  InputStream inStream = null;

  WenKuService service = WenKuService.getInstance();

  try {

   MyWenKu wenku = service.getWenKu(guid);

   

   String dir = Util.getFilePath(MyConfig.getFiledataDir());

   

   String fileName = wenku.getFtitle()+"."+wenku.getFext();

   String filePath = dir+wenku.getFsourcefile();

   File file = new File(filePath);

   

    inStream = new FileInputStream(filePath);

    response.reset();// 清空response

    response.setContentType("application/x-msdownload");

    // 设置response的Header ISO_8859_1

    response.addHeader("Content-Disposition", "attachment;filename="

      + new String(fileName.getBytes("gb2312"), "ISO_8859_1"));

    response.addHeader("Content-Length", "" + file.length());

    byte[] b = new byte[1024*4];

    int len = 0;

    long length = 0;

    out = response.getOutputStream();

    // 循环取出流中的数据

    while ((len = inStream.read(b)) > 0) {

     out.write(b, 0, len);

    }

    out.flush();//这句会弹出下载对话框(你也可以选择打开)

   out.close();

   inStream.close();

   long end = System.currentTimeMillis();

  } catch (Exception e) {

   e.printStackTrace();

  }

  

  return null;

  

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: