ssh框架實(shí)現(xiàn)文件上傳下載實(shí)例代碼
最近在學(xué)習(xí)ssh框架,我用ssh框架寫了一個(gè)文件上傳下載的實(shí)例代碼,有需要了解的朋友可參考。希望此文章對(duì)各位有所幫助。
<!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"));
//判斷文件是否上傳,如果上傳的話將會(huì)創(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 流對(duì)象名 —— 比如這里寫inputStream,它就會(huì)自動(dòng)去找Action中的getInputStream方法。 -->
<param name="inputName">inputStream</param>
<!-- contentDisposition 使用經(jīng)過轉(zhuǎn)碼的文件名作為下載文件名 —— 默認(rèn)格式是attachment;filename="${fileName}",將調(diào)用該Action中的getFileName方法。 -->
<param name="contentDisposition">attachment;filename=${filename}</param>
<!-- bufferSize 下載文件的緩沖大小 -->
<param name="bufferSize">4096</param>
</result>
</action>
</package>
</struts>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java8 LocalDate LocalDateTime等時(shí)間類用法實(shí)例分析
這篇文章主要介紹了java8 LocalDate LocalDateTime等時(shí)間類用法,結(jié)合具體實(shí)例形式分析了LocalDate、LocalTime、LocalDateTime等日期時(shí)間相關(guān)類的功能與具體使用技巧,需要的朋友可以參考下2017-04-04
SpringCloudGateway 網(wǎng)關(guān)登錄校驗(yàn)實(shí)現(xiàn)思路
文章介紹了在微服務(wù)架構(gòu)中使用Spring Cloud Gateway進(jìn)行登錄校驗(yàn)的方法,通過在網(wǎng)關(guān)層面進(jìn)行登錄校驗(yàn),并將用戶信息通過請(qǐng)求頭傳遞給下游微服務(wù),解決了每個(gè)微服務(wù)都需要獨(dú)立進(jìn)行登錄校驗(yàn)的問題,此外,還討論了如何在微服務(wù)之間傳遞用戶信息2024-11-11
elasticsearch中term與match的區(qū)別講解
今天小編就為大家分享一篇關(guān)于elasticsearch中term與match的區(qū)別講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
Java實(shí)現(xiàn)經(jīng)典游戲Flappy Bird的示例代碼
Flappy?Bird是13年紅極一時(shí)的小游戲,即摁上鍵控制鳥的位置穿過管道間的縫隙。本文將用Java語言實(shí)現(xiàn)這一經(jīng)典的游戲,需要的可以參考一下2022-02-02
idea項(xiàng)目打開后出現(xiàn)橙色的時(shí)鐘圖標(biāo)的解決
本文主要介紹了idea項(xiàng)目打開后出現(xiàn)橙色的時(shí)鐘圖標(biāo)的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Java并發(fā)系列之AbstractQueuedSynchronizer源碼分析(條件隊(duì)列)
這篇文章主要為大家詳細(xì)介紹了Java并發(fā)系列之AbstractQueuedSynchronizer源碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02

