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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。