您好,登錄后才能下訂單哦!
最近在學習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>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。