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"));
//判斷文件是否上傳,如果上傳的話將會創(chuàng)建該目錄
if(!dir.exists()){
dir.mkdir(); //創(chuàng)建該目錄
}
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>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
java8 LocalDate LocalDateTime等時間類用法實例分析
這篇文章主要介紹了java8 LocalDate LocalDateTime等時間類用法,結合具體實例形式分析了LocalDate、LocalTime、LocalDateTime等日期時間相關類的功能與具體使用技巧,需要的朋友可以參考下2017-04-04
elasticsearch中term與match的區(qū)別講解
今天小編就為大家分享一篇關于elasticsearch中term與match的區(qū)別講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02
Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(條件隊列)
這篇文章主要為大家詳細介紹了Java并發(fā)系列之AbstractQueuedSynchronizer源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02

