Struts2上传与下载文件 简单例子

之前转载过一篇上传与下载的文章 ,参考一下自己整理验证了一下

package com.jereh.edu.entity;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

public class UpLoadAction {
  private String uname ; //前台提交的用户名 ;
  private  File file;  //上传文件
  private  String fileFileName; //上传文件 的文件名 前台自动提交不用另写 input
  private  String fileContentType ;/上传文件 的文件类型 前台自动提交不用另写 input
  private  InputStream inputStream ;//上传是用到的输入流 可以定义局部变量
  private  String fileName ;//前台隐藏上传的下载的文件名
  private  String  downLoadPath; //下载路径

public String getFileName()  {

	return fileName;
}
public void setFileName(String fileName) throws UnsupportedEncodingException{
	byte[] b= fileName.getBytes("utf-8");
	String str =new String(b,"iso-8859-1");
	//获取时重新解码编码 ,解决乱码 和不显示中文的问题
    this.fileName = str;
}
public String getDownLoadPath() {
	return downLoadPath;
}
public void setDownLoadPath(String downLoadPath) {
	this.downLoadPath = downLoadPath;
}

public InputStream getInputStream() {
	return inputStream;
}
public void setInputStream(InputStream inputStream) {
	this.inputStream = inputStream;
}
public String getUname() {
	return uname;
}
public void setUname(String uname) {
	this.uname = uname;
}
public File getFile() {
	return file;
}
public void setFile(File file) {
	this.file = file;
}

public String getFileFileName() {
	return fileFileName;
}
public void setFileFileName(String fileContentName) {
	this.fileFileName = fileContentName;
}

  public String getFileContentType() {
	return fileContentType;
}
public void setFileContentType(String fileContentType) {
	this.fileContentType = fileContentType;
}
public String upFile() throws IOException{
	  //文件上传路径 ;
	  String path = ServletActionContext.getServletContext().getRealPath("/upload/");
	//  File upFile =new File(path+File.separatorChar+file.getName());
	  File upFile =new File(path+File.separatorChar+fileFileName);
	  upFile.getParentFile().mkdir();
	  //创建path路径
	  System.out.println("文件名+++++"+file.getName()+"---"+file.getPath());
	  //上传的file是个临时文件Struts2保存起来 我们把它导入到我们想要的路径下
	  System.out.println("上传的文件名+++++"+fileFileName+"---"+fileContentType);

	  inputStream  =new FileInputStream(file) ;
	  //从临时文件里读取
	  OutputStream ops =new FileOutputStream(upFile);
	  //输出到指定文件
	  byte[] b =new byte[1024] ;

	  while((inputStream.read(b,0,b.length))!=-1){
		  ops.write(b);
	  }
 	  ops.close();
	  inputStream.close();
	  return Action.SUCCESS;
  }
public InputStream getDownLoad() {
	return ServletActionContext.getServletContext().getResourceAsStream(downLoadPath);
}
public String downLoadFile(){
	return Action.SUCCESS ;
}

}

有配置过Struts的一看就会明白

<package name="upload"  namespace="/upload" extends="struts-default" >
            <action name="upFile" method="upFile" class="com.jereh.edu.entity.UpLoadAction">
                <result name="success">
                 /success.jsp
                </result>
            </action>
            <action name="downLoadFile" method="downLoadFile"
            class="com.jereh.edu.entity.UpLoadAction">
            <result name="success" type="stream">

            <param name="contentDisposition">attachment;filename=${fileName}</param>
            <param name="inputName">downLoad</param>
            </result>
            </action>
            </package>

 <param name="contentDisposition">attachment;filename=${fileName}</param>
contentDisposition 配置了前台是弹出下载框的形式下载 否则 直接显示在页面上 filename 是下载框提示的下载文件的名字

前台jsp form 表单

<pre name="code" class="html"><%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>upFile</title>

  </head>

  <body>
  <form action="upload/upFile.action" method ="post" enctype="multipart/form-data">
         <p>
         用户名:
         </p>
   <p><input type="text" name="uname"></p>
   		<p>
   	文件:
   		</p>
   		<p>
   		<input type="file" name="file">
   		</p>
   		<p>
   		<input type="submit" value="提交">
   		</p>
   </form>
   <br/>
   <h3>下载</h3>
   <form action="upload/downLoadFile.action" method="post">
   <input type="hidden" name="downLoadPath" value="/upload/新建文本文档.txt">
     <input type="hidden" name="fileName" value="新建文本文档.txt">
   <input type="submit" value="下载">

   </form>
  </body>
</html>


上传的表单的

<pre name="code" class="html">enctype="multipart/form-data"

属性必须添加 而且method="post" 方式提交 为了数据的完整性

jsp中隐藏了文件路径和文件名  做的项目了可以改成js代码 就不多说了

时间: 2024-11-10 16:10:19

Struts2上传与下载文件 简单例子的相关文章

struts2上传和下载文件study

文件上传: 1.JSP中提交method="post" enctype="multipart/form-data" 的表单 2.Action中接收file,fileFileName, fileContentType文件参数 3.  savedFile = new File("E:\\File", fileFileName);   file.renameTo(savedFile); 文件下载: 1.点击下载   <s:a href="

在SecureCRT上,使用命令行从远程服务器上传或者下载文件

引言: 在服务器上,一般都会通过命令行来进行访问.对于上传或者下载文件的需求,除了使用filezilla之类的工具之外,还可以使用rz/sz来完成类似操作. 1.  SecureCRT SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件. 一般的运维或者开发人员都是使用这些工具来远程登录服务器,完成相应操作. 2.  上传或者下载文件需求 一般服务器如果开发了21端口,并支持ftp协议,则可以使用filezi

centos如何在命令行中使用 ftp 命令上传和下载文件

本文中,介绍在 Linux shell 中如何使用 ftp 命令.包括如何连接 FTP 服务器,上传或下载文件以及创建文件夹.尽管现在有许多不错的 FTP 桌面应用,但是在服务器.SSH.远程会话中命令行 ftp 命令还是有很多应用的.比如.需要服务器从 ftp 仓库拉取备份. 步骤 1: 建立 FTP 连接 想要连接 FTP 服务器,在命令上中先输入ftp然后空格跟上 FTP 服务器的域名 'domain.com' 或者 IP 地址 例如: ftp domain.com ftp 192.168

Linux (rz、sz命令行)与本地电脑 命令行上传、下载文件

Linux 与本地电脑直接交互, 命令行上传.下载文件. 一.lrzsz命令行安装: 1.rpm安装:(链接: http://pan.baidu.com/s/1cBuTm2 密码: vijf) rpm -ivh lrzsz-0.12.20-22.1.x86_64.rpm 2.yum 安装: yum install lrzsz 二.命令使用: 1.发送到本地: sz 文件名 2.上传到服务器: rz -be 在弹出的框中选择文件,上传文件的用户和组是当前登录的用户

【转】每天一个linux命令(26):用SecureCRT来上传和下载文件

原文网址:http://www.cnblogs.com/peida/archive/2012/11/28/2793181.html 用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接用SecureCRT自带的上传下载功能无疑是最方便的,SecureCRT下的文件传输协议有ASCII.Xmodem.Zmodem. 文件传输协议: 文件传输是数据交换的主要形式.在进行文件传输时,为使文件能被正确识别和传送,我们需要在两台计算机之间建立统一的传输协议.这个协议包括了文件的识别.传送的

利用SecureCRT上传、下载文件(使用sz与rz命令),超实用!

    借助securtCRT,使用linux命令sz可以很方便的将服务器上的文件下载到本地,使用rz命令则是把本地文件上传到服务器.     其中,对于sz和rz的理解与记忆我用了如下的方法(很多时候容易搞混):     sz中的s意为send(发送),告诉客户端,我(服务器)要发送文件 send to cilent,就等同于客户端在下载.     rz中的r意为received(接收),告诉客户端,我(服务器)要接收文件 received by cilent,就等同于客户端在上传.    

基于sftp来上传和下载文件

1. 什么是sftp? sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.主要用来在Linux系统进行文件的上传和下载,无需其他的附属软件或者工具. 2. 如何打开sftp? Linux下直接在终端中输入:sftp username[email protected] ip(or remote host name).出现验证时,只需填入正确的密码即可实现远程链接.登入成功后终端呈现出:sftp>.... sftp在非

secureCRT上传、下载文件

secureCRT上传和下载命令分别为rz.sz 我的理解是rz,就是服务器接收(received),sz,就是服务器发送(send). secureCRT上的命令就是: 下载 sz filename(filename是你要下载的文件名,前提要进入那个文件所在的目录) 下载下来的文件存放的目录设置下图可见: 上传 rz再选择你要上传的文件. secureCRT上传.下载文件,布布扣,bubuko.com

Linux--用SecureCRT来上传和下载文件

SecureCRT下的文件传输协议有以下几种:ASCII.Xmodem.Ymodem.Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由于使用了CRC错误侦测方法,传输的准确率可高达99.6%. Ymodem:这是Xmodem的改良版,使用了1024位区段传送,速度比Xmodem要快Zmodem:Zmodem采用了串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传.快速错误侦测等功能.这是目前最