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

发布时间 - 2026-01-11 00:08:49    点击率:

最近在学习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>

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


# ssh框架上传文件  # ssh框架实现文件上传  # ssh框架文件上传下载  # SSH 框架简介  # SSH框架实现表单上传图片实例代码  # 浅谈SSH框架中spring的原理  # 详解ssh框架原理及流程  # 上传  # 文件上传  # 就会  # 将会  # 去找  # 我用  # 写了  # 种方法  # 第二种  # 第一种  # 大家多多  # File  # external  # java  # nofollow  # IOException  # InputStream  # FileInputStream  # FileOutputStream  # cpsec 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel中的withCount方法怎么高效统计关联模型数量  如何快速登录WAP自助建站平台?  如何在IIS中新建站点并解决端口绑定冲突?  Bootstrap CSS布局之列表  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  nginx修改上传文件大小限制的方法  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  浅谈redis在项目中的应用  如何基于PHP生成高效IDC网络公司建站源码?  如何用PHP工具快速搭建高效网站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  Java类加载基本过程详细介绍  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何用虚拟主机快速搭建网站?详细步骤解析  如何在云主机上快速搭建多站点网站?  Thinkphp 中 distinct 的用法解析  Laravel如何创建自定义中间件?(Middleware代码示例)  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  手机软键盘弹出时影响布局的解决方法  在线教育网站制作平台,山西立德教育官网?  如何在阿里云通过域名搭建网站?  如何在IIS管理器中快速创建并配置网站?  黑客如何通过漏洞一步步攻陷网站服务器?  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  如何用VPS主机快速搭建个人网站?  独立制作一个网站多少钱,建立网站需要花多少钱?  企业网站制作这些问题要关注  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel如何实现API速率限制?(Rate Limiting教程)  Laravel如何实现多对多模型关联?(Eloquent教程)  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Laravel如何处理异常和错误?(Handler示例)  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  如何快速搭建FTP站点实现文件共享?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  米侠浏览器网页背景异常怎么办 米侠显示修复  如何快速搭建高效WAP手机网站吸引移动用户?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何用腾讯建站主机快速创建免费网站?  Android okhttputils现在进度显示实例代码  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  如何快速搭建安全的FTP站点?