ssh框架实现文件上传下载实例代码

 更新时间:2017年03月13日 11:47:30   作者:布诺  
本篇文章主要介绍了ssh框架文件上传下载实例代码,实例分析了Spring+struts+Hibernate的使用技巧,非常具有实用价值,需要的朋友可以参考下。

最近在学习ssh框架,我用ssh框架写了一个文件上传下载的实例代码,有需要了解的朋友可参考。希望此文章对各位有所帮助。

<!doctype html>
<html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta name="Author" content="BuNuo">
 <meta name="Keywords" content="文件上传下载">
 <meta name="Description" content="ssh框架文件上传下载">
 <title>Document</title>
 </head>
 <body>
 <form action="newFile" method="post" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="上传">
 </form>
 <a href="downFile?filename=${filename}" rel="external nofollow" >下载</a>
 </body>
</html>

package com.cpsec.tang.chemical.action;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;

@Controller("newFileAction")
public class NewFileAction extends ActionSupport {
 private File file;//文件
 private String fileFileName;//文件名称 
 private String fileContentType; //文件类型 
 private String filename;
 private InputStream inputStream;
 
 public String newFile(){
  File dir=new File(ServletActionContext.getServletContext().getRealPath("files")); 
  //判断文件是否上传,如果上传的话将会创建该目录 
  if(!dir.exists()){ 
   dir.mkdir(); //创建该目录 
  } 
  System.out.println(file);
  System.out.println(fileFileName);
  //第一种文件上传的方法 
  //声明文件输入流,为输入流指定文件路径 
  //获取输出流,获取文件的文件地址及名称 
  FileInputStream in=null; 
  FileOutputStream out=null;
  try{ 
   in= new FileInputStream(file);
   out=new FileOutputStream(dir + "\\" +fileFileName); 
   byte[] b=new byte[1024*1024];//每次写入的大小 
   int i=0; 
   while((i=in.read(b))>0){ 
    out.write(b,0,i); 
   } 
   in.close();
   out.close(); 
  }catch(Exception e){ 
   e.printStackTrace(); 
  }finally{ 
  } 
  
  /*//第二种文件上传的方法 
  try {
   FileUtils.copyFile(file,new File(dir,fileFileName)); 
  } catch (IOException e) {
   e.printStackTrace();
  } 
  
   //第三种方法 
   BufferedReader bReader=null;
   BufferedWriter bWriter=null;
   try{ 
    bReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    bWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dir+"\\"+fileFileName))); 
    char[] str=new char[1024*1024]; 
    int i=0; 
    while((i=bReader.read(str))>0){ 
     bWriter.write(str,0,i); 
    } 
    bReader.close();
    bWriter.close(); 
    dir.delete();
   }catch(Exception e){ 
    e.printStackTrace(); 
   }finally{ 
    
   } */
   return SUCCESS;
 }
 
 public String downFile(){
  System.out.println(filename);
  inputStream=ServletActionContext.getServletContext().getResourceAsStream("/files/"+filename);
  System.out.println(inputStream);
  return SUCCESS;
 }


 public File getFile() {
  return file;
 }


 public void setFile(File file) {
  this.file = file;
 }


 public String getFileFileName() {
  return fileFileName;
 }


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


 public String getFileContentType() {
  return fileContentType;
 }


 public void setFileContentType(String fileContentType) {
  this.fileContentType = fileContentType;
 }

 public String getFilename() {
  return filename;
 }

 public void setFilename(String filename) {
  this.filename = filename;
 }

 public InputStream getInputStream() {
  return inputStream;
 }

 public void setInputStream(InputStream inputStream) {
  this.inputStream = inputStream;
 }

}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
 <package name="newFileAction" namespace="/" extends="struts-default">
  
  <action name="downFile" class="newFileAction" method="downFile">
   <result name="success" type="stream"> 
    <param name="contentType">application/octet-stream;charset=ISO8859-1</param>
   <!-- inputName 流对象名 —— 比如这里写inputStream,它就会自动去找Action中的getInputStream方法。 -->
   <param name="inputName">inputStream</param>
   <!-- contentDisposition 使用经过转码的文件名作为下载文件名 —— 默认格式是attachment;filename="${fileName}",将调用该Action中的getFileName方法。 -->
   <param name="contentDisposition">attachment;filename=${filename}</param>
   <!-- bufferSize 下载文件的缓冲大小 -->
   <param name="bufferSize">4096</param>
   </result>
   </action>
 </package>
</struts>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java 导出 CSV 文件操作详情

    Java 导出 CSV 文件操作详情

    这篇文章主要介绍了Java导出CSV文件操作详情,文章通过导入坐标展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 一种求正整数幂的高效算法详解

    一种求正整数幂的高效算法详解

    本篇文章是对java中一种求正整数幂的高效算法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • java8 LocalDate LocalDateTime等时间类用法实例分析

    java8 LocalDate LocalDateTime等时间类用法实例分析

    这篇文章主要介绍了java8 LocalDate LocalDateTime等时间类用法,结合具体实例形式分析了LocalDate、LocalTime、LocalDateTime等日期时间相关类的功能与具体使用技巧,需要的朋友可以参考下
    2017-04-04
  • Java中ArrayList类的用法与源码完全解析

    Java中ArrayList类的用法与源码完全解析

    这篇文章主要介绍了Java中ArrayList类的用法与源码完全解析,ArrayList类通过List接口实现,是Java中引申出的一种数据结构,需要的朋友可以参考下
    2016-05-05
  • SpringCloudGateway 网关登录校验实现思路

    SpringCloudGateway 网关登录校验实现思路

    文章介绍了在微服务架构中使用Spring Cloud Gateway进行登录校验的方法,通过在网关层面进行登录校验,并将用户信息通过请求头传递给下游微服务,解决了每个微服务都需要独立进行登录校验的问题,此外,还讨论了如何在微服务之间传递用户信息
    2024-11-11
  • elasticsearch中term与match的区别讲解

    elasticsearch中term与match的区别讲解

    今天小编就为大家分享一篇关于elasticsearch中term与match的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Java实现经典游戏Flappy Bird的示例代码

    Java实现经典游戏Flappy Bird的示例代码

    Flappy Bird是13年红极一时的小游戏,即摁上键控制鸟的位置穿过管道间的缝隙。本文将用Java语言实现这一经典的游戏,需要的可以参考一下
    2022-02-02
  • idea项目打开后出现橙色的时钟图标的解决

    idea项目打开后出现橙色的时钟图标的解决

    本文主要介绍了idea项目打开后出现橙色的时钟图标的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Spring boot 打jar包分离lib的正确配置方式

    Spring boot 打jar包分离lib的正确配置方式

    spring boot打jar包分离lib后,配置文件的方式,在网上可以搜到很多答案,但是都不够完善,今天小编给大家带来了Spring boot 打jar包分离lib的正确配置方式,感兴趣的朋友一起看看吧
    2018-02-02
  • Java并发系列之AbstractQueuedSynchronizer源码分析(条件队列)

    Java并发系列之AbstractQueuedSynchronizer源码分析(条件队列)

    这篇文章主要为大家详细介绍了Java并发系列之AbstractQueuedSynchronizer源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02

最新评论