欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-04 10:51:23
最近在学习ssh框架,我用ssh框架写了一个文件上传下载的实例代码,有需要了解的朋友可参考。希望此文章对各位有所帮助。

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

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