天天看点

Struts2做下载

1、编写anction,如下:

package cn.com.css.misps.onlinegraph.web.action;

import java.io.file;

import java.io.fileinputstream;

import java.io.inputstream;

import java.net.urlencoder;

import java.util.arraylist;

import java.util.hashmap;

import java.util.linkedhashmap;

import java.util.list;

import java.util.map;

import javax.annotation.resource;

import org.springframework.context.annotation.scope;

import org.springframework.stereotype.controller;

import cn.com.css.common.action.baseaction;

import cn.com.css.misps.domain.servicecode;

import cn.com.css.misps.domain.serviceproductcode;

import cn.com.css.misps.domain.tprcategory;

import cn.com.css.misps.onlinegraph.service.iservicecodeservice;

import cn.com.css.misps.onlinegraph.service.iserviceproductcodeservice;

import cn.com.css.misps.onlinegraph.service.itprcategoryservice;

import cn.com.css.misps.onlinegraph.service.itproductinfoservice;

import cn.com.css.misps.onlinegraph.util.analysismicaps2bytesutils;

import cn.com.css.misps.onlinegraph.util.dateutil;

import cn.com.css.misps.onlinegraph.util.fnameutils;

import cn.com.css.misps.onlinegraph.util.imagebytesanalysisutils;

import cn.com.css.misps.onlinegraph.util.productsstorageutils;

import cn.com.css.misps.onlinegraph.webservice.impl.graphwebserviceimpl;

import cn.com.system.domain.account;

import com.opensymphony.xwork2.actioncontext;

/**

 * @brief onlinegraphaction.java 这里是在线出图部分的代码

 * @attention 要注意的是页面中的表单填写的是服务方法中要求填写的参数

 * @author 涂作权

 * @date 2013-9-4

 * @note begin modify by null

 */

@suppresswarnings("serial")

@scope("prototype")

@controller

public class onlinegraphaction extends baseaction {

 // 相对门户项目的相对路径

 private string relativestoragefilepath;

 // 图形文件的文件名称

 private string imgpath;

 // 下载文件用户的

 private inputstream inputstream;

 /**

  * \brief 下载产生的图片

  *

  * @return

  * @attention

  * @author 涂作权

  * @date 2014-3-26

  * @note begin modify by null

  */

 public string download() throws exception {

  inputstream = new fileinputstream(

    productsstorageutils.graphabsolutepath

      + relativestoragefilepath + "/" + imgpath);

  //这里的imgpath表示的是的是文件的名称,即:fname

  string name = urlencoder.encode(imgpath,"utf-8");

  actioncontext.getcontext().put("name", name);

  return "download";

 }

  * @return the imgpath

 public string getimgpath() {

  return imgpath;

  * @param imgpath

  *            the imgpath to set

 public void setimgpath(string imgpath) {

  this.imgpath = imgpath;

  * @return the inputstream

 public inputstream getinputstream() {

  return inputstream;

  * @param inputstream

  *            the inputstream to set

 public void setinputstream(inputstream inputstream) {

  this.inputstream = inputstream;

}

在struts配置文件中进行如下配置:

 <action name="onlinegraph_*" class="cn.com.css.misps.onlinegraph.web.action.onlinegraphaction" method="{1}">

   <result name="download" type="stream">

    <param name="inputname">inputstream</param>

    <param name="contentdisposition">attachment;filename="${#name}"</param>

    <param name="buffersize">4096</param>

   </result>

  </action>