欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ssh框架實(shí)現(xiàn)文件上傳下載實(shí)例代碼

 更新時(shí)間:2017年03月13日 11:47:30   作者:布諾  
本篇文章主要介紹了ssh框架文件上傳下載實(shí)例代碼,實(shí)例分析了Spring+struts+Hibernate的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。

最近在學(xué)習(xí)ssh框架,我用ssh框架寫(xiě)了一個(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; //文件類(lèi)型 
 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];//每次寫(xiě)入的大小 
   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ì)象名 —— 比如這里寫(xiě)inputStream,它就會(huì)自動(dòng)去找Action中的getInputStream方法。 -->
   <param name="inputName">inputStream</param>
   <!-- contentDisposition 使用經(jīng)過(guò)轉(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)文章

  • Java正則表達(dá)式(匹配、切割、替換、獲取)等方法

    Java正則表達(dá)式(匹配、切割、替換、獲取)等方法

    這篇文章主要介紹了Java正則表達(dá)式(匹配、切割、替換、獲取)等方法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • JVM Client和Server端有什么區(qū)別

    JVM Client和Server端有什么區(qū)別

    這篇文章主要介紹了JVM Client和Server端有什么區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Hibernate基于ThreadLocal管理Session過(guò)程解析

    Hibernate基于ThreadLocal管理Session過(guò)程解析

    這篇文章主要介紹了Hibernate基于ThreadLocal管理Session過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 在Eclipse中使用版本管理工具SVN的圖文教程

    在Eclipse中使用版本管理工具SVN的圖文教程

    下面小編就為大家分享一篇在Eclipse中使用版本管理工具SVN的圖文教程,具有很好的參考價(jià)值,一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Java計(jì)算百分比的各種方法總結(jié)

    Java計(jì)算百分比的各種方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于Java計(jì)算百分比的各種方法,要計(jì)算百分比并保留兩位小數(shù),首先需要明確計(jì)算公式和java語(yǔ)言的數(shù)學(xué)計(jì)算方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • Dubbo服務(wù)無(wú)法注冊(cè)到ZK上問(wèn)題

    Dubbo服務(wù)無(wú)法注冊(cè)到ZK上問(wèn)題

    這篇文章主要介紹了Dubbo服務(wù)無(wú)法注冊(cè)到ZK上問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java中BEAN與EJB的區(qū)別淺析

    Java中BEAN與EJB的區(qū)別淺析

    這篇文章主要介紹了Java中BEAN與EJB的區(qū)別淺析,本文總結(jié)了它們之間的不同之處,需要的朋友可以參考下
    2015-03-03
  • 淺談java字符串比較到底應(yīng)該用==還是equals

    淺談java字符串比較到底應(yīng)該用==還是equals

    這篇文章主要介紹了淺談java字符串比較到底應(yīng)該用==還是equals,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java使用策略模式解決商場(chǎng)促銷(xiāo)商品問(wèn)題示例

    Java使用策略模式解決商場(chǎng)促銷(xiāo)商品問(wèn)題示例

    這篇文章主要介紹了Java使用策略模式解決商場(chǎng)促銷(xiāo)商品問(wèn)題,簡(jiǎn)單描述了策略模式的概念、原理,并結(jié)合實(shí)例形式分析了Java基于策略模式解決商品促銷(xiāo)問(wèn)題的相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • springboot加載命令行參數(shù)ApplicationArguments的實(shí)現(xiàn)

    springboot加載命令行參數(shù)ApplicationArguments的實(shí)現(xiàn)

    本文主要介紹了springboot加載命令行參數(shù)ApplicationArguments的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論