Struts2day04Struts2.0文件的下載

1.寫一個Action,在DownloadAction extends ActionSuport

package com.jsu.struts2.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class DownloadAction extends ActionSupport{
	private List<String> fileNames;
	private String fname;
	private InputStream downFile;//傳給用戶的是一個文件流
	/*獲得文件夾中的所有文件名稱*/
	public String findAll(){
		String path =ServletActionContext.getServletContext().getRealPath("/upload");
		File file  = new File(path);
		File [] files = file.listFiles();
		fileNames = new ArrayList<String>();
		for (File f:files) {
			fileNames.add(f.getName());
		}
		return "list";
	}
	/*執行下載操作*/
	@Override
	public String execute() {
	//獲得文件的路徑
		String path =ServletActionContext.getServletContext().getRealPath("/upload");
		System.out.println(path);
		String fileRealPath = path+"\\"+fname;
		System.out.println(fileRealPath);
		try {
				downFile = new FileInputStream(fileRealPath);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		return "success";
	}
	public List<String> getFileNames() {
		return fileNames;
	}
	public void setFileNames(List<String> fileNames) {
		this.fileNames = fileNames;
	}
	public String getFname() {
		try {
			fname = new String(fname.getBytes(),"ISO-8859-1");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return fname;
	}
	public void setFname(String fname) {
		try {
		//這裏編碼格式爲gbk,在jsp頁面的頭信息也要設置爲gbk
			fname=new String(fname.getBytes("ISO-8859-1"),"gbk");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		this.fname = fname;
	}
	public InputStream getDownFile() {
		return downFile;
	}
	public void setDownFile(InputStream downFile) {
		this.downFile = downFile;
	}
	
	
}

 2.在download.jsp頁面

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> </head>
  <body>
  <center>
  <h1>文件下載</h1>
	 <s:iterator var="file" value="fileNames">
	 <a href="down?fname=<s:property value="#file"></s:property>">
	 <s:property value="#file"></s:property></a>
	 </s:iterator>
   </center>
  </body>
</html>

 3.在struts.xml文件配置

<!-- 文件下載 -->
		<action name="down" class="com.jsu.struts2.action.DownloadAction">
		  <result name="list">/download.jsp</result>
		  <!-- 如果Struts2.0框架以流的形式反饋用戶的時候,type="stream" -->
		  <result name="success" type="stream">
		    <!-- 指明那個屬性是以流的形式反饋 -->
		    <param name="inputName">downFile</param>
		    <!-- 設置緩存區 -->
		    <param name="buffSize">1024</param>
		    <!-- 設置瀏覽器的打開方式:inline:打開直接顯示;
		         attachment:瀏覽器以附件的形式進行存儲
		         filename:文件的名稱
		          -->
		    <param name="contentDisposition">attachment;filename=${fname}</param>
		  </result>
		</action>

 4.地址欄訪問:http://localhost:8080/struts2_04/down!findAll.action

       注意:upload文件夾下面一定要有文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章