1. 程式人生 > >Struts多檔案上傳與下載

Struts多檔案上傳與下載

目錄

單檔案上傳 

上傳多檔案

單檔案上傳 

首先在頁面

<!-- Struts2的檔案上傳標籤 -->
	<s:form action="FileUpAction" namespace="/" method="POST"
		enctype="multipart/form-data">
		<s:file name="fileUpload" label="瀏覽檔案" size="40" />
		<s:submit value="submit" name="上傳" />
	</s:form>

action

package com.bdqn.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport{
	private File fileUpload;
	private String fileUploadFileName;
	
	public String fileUp() throws Exception {
		System.out.println(fileUpload);
		FileInputStream fis = new FileInputStream(fileUpload);
		File file = new File("D://Tomcat//apache-tomcat-8.5.31//webapps//上傳檔案Struts//file//"+fileUploadFileName);
		if (file.exists()) {
			file.createNewFile();
		}
		FileOutputStream os = new FileOutputStream(file);
		byte[] bb = new byte[1024];
		while (fis.read(bb)!=-1) {
			os.write(bb);
			os.flush();
		}
		return SUCCESS;
	}

	public File getFileUpload() {
		return fileUpload;
	}

	public void setFileUpload(File fileUpload) {
		this.fileUpload = fileUpload;
	}

	public String getFileUploadFileName() {
		return fileUploadFileName;
	}

	public void setFileUploadFileName(String fileUploadFileName) {
		this.fileUploadFileName = fileUploadFileName;
	}
	
}

上傳多檔案

就是在單檔案的基礎上把單個屬性變為陣列

<!-- Struts2的檔案上傳標籤 -->
	<s:form action="FileUpAction" namespace="/" method="POST"
		enctype="multipart/form-data">
		<s:file name="fileUpload" label="瀏覽檔案" size="40" />
		<s:file name="fileUpload" label="瀏覽檔案" size="40" />
		<s:file name="fileUpload" label="瀏覽檔案" size="40" />
		<s:submit value="submit" name="上傳" />
	</s:form>
package com.bdqn.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport{
	private File[] fileUpload;
	private String[] fileUploadFileName;
	
	public String fileUp() throws Exception {
		for (int i = 0; i < fileUpload.length; i++) {
			System.out.println(fileUpload);
			FileInputStream fis = new FileInputStream(fileUpload[i]);
			File file = new File("D://Tomcat//apache-tomcat-8.5.31//webapps//上傳檔案Struts//"+fileUploadFileName[i]);
			if (file.exists()) {
				file.createNewFile();
			}
			FileOutputStream os = new FileOutputStream(file);
			byte[] bb = new byte[1024];
			while (fis.read(bb)!=-1) {
				os.write(bb);
				os.flush();
			}
		}
		return SUCCESS;
	}

	public File[] getFileUpload() {
		return fileUpload;
	}

	public void setFileUpload(File[] fileUpload) {
		this.fileUpload = fileUpload;
	}

	public String[] getFileUploadFileName() {
		return fileUploadFileName;
	}

	public void setFileUploadFileName(String[] fileUploadFileName) {
		this.fileUploadFileName = fileUploadFileName;
	}
	
}

檔案自動掃描下載

package com.bdqn.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

public class Fileload extends ActionSupport{
	//用來儲存檔案
	private File[] files = new File[100];
	//用來儲存檔名字
	private String[] fileName = new String[100];
	//用來儲存檔案個數,用來遍歷
	private List<Integer> list = new ArrayList<Integer>();

	//頁面返回的檔案地址,用於下載
	private String fileinfo;
	//用來記錄名字
	private String name;

	//查詢檔案的個數和下載地址,儲存起來輸出到頁面
	public String load() throws Exception {
		//獲取專案底下file的所有檔案
		File file = new File("D://Tomcat//apache-tomcat-8.5.31//webapps//上傳檔案Struts//file");
		//假如頁面存在
		if (file.exists()) {
			//獲取該資料夾底下的所有的檔案和目錄
			File[] tempList = file.listFiles();
			//迴圈遍歷確定是不是檔案,或者是不是目錄
			for (int i = 0; i < tempList.length; i++) {
				if (tempList[i].isFile()) {
					//如果檔案就加入如檔案陣列
					files[i] = tempList[i];
					//同時獲取該問檔案的名字
					fileName[i] = tempList[i].getName();
					//為陣列的長度進行標記,等下在頁面進行遍歷也是靠它
					list.add(i);
				}
			}
		}
		return SUCCESS;
	}

	public String xiazai() throws Exception {
		//讀入檔案地址
		File file = new File(fileinfo);
		//讀入流
		FileInputStream is= new FileInputStream(file);
		//接受容器
		File file2 = new File("J://"+name);
		//寫出流
		FileOutputStream fis = new FileOutputStream(file2);
		//緩衝區
		byte[] bb = new byte[1024];
		while (is.read(bb)!=-1) {
			fis.write(bb);
			fis.flush();
		}
		return SUCCESS;
	}


	public List<Integer> getList() {
		return list;
	}
	public void setList(List<Integer> list) {
		this.list = list;
	}

	public File[] getFiles() {
		return files;
	}
	public void setFiles(File[] files) {
		this.files = files;
	}
	public String[] getFileName() {
		return fileName;
	}
	public void setFileName(String[] fileName) {
		this.fileName = fileName;
	}

	public String getFileinfo() {
		return fileinfo;
	}

	public void setFileinfo(String fileinfo) {
		this.fileinfo = fileinfo;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}
<!-- 檔案遍歷方法 -->
		<action name="loadAction" class="com.bdqn.action.Fileload" method="load">
			<result name="success">/loadfile.jsp</result>
		</action>
		<!-- 檔案下載類 -->
		<action name="xiazaiAction" class="com.bdqn.action.Fileload" method="xiazai">
			<result name="success">/success.jsp</result>
		</action>

頁面程式碼,和action是關聯的

<table border="2">
		<tr>
			<td>檔名</td>
			<td>下載</td>
		</tr>
		<c:forEach items="${list}" var="li" varStatus="str">
			<tr>
				<td>${fileName[li]}</td>
				<td>
					<form action="/上傳檔案Struts/Fileload/xiazaiAction">
						<input type="hidden" name="fileinfo" value="${files[li]}">
						<input type="hidden" name="name" value="${fileName[li]}">
						<input type="submit" value="下載">
					</form></td>
			</tr>
		</c:forEach>
	</table>
<body>
   	<a href="fileUp.jsp">上傳檔案</a>
    <a href="/上傳檔案Struts/Fileload/loadAction">下載檔案網頁</a>
  </body>

下載的第二種方法

<a href="${pageContext.request.contextPath}/file/${fileName[li]}" download="">下載</a>

獲得當前專案名字

${pageContext.request.contextPath}

相關推薦

Struts檔案下載

目錄 單檔案上傳  上傳多檔案 單檔案上傳  首先在頁面 <!-- Struts2的檔案上傳標籤 --> <s:form action="FileUpAction" namespace="/" method="POST" enctyp

struts檔案下載

struts的檔案上傳與下載後臺程式碼 package interceptor; import java.io.File; import java.io.IOException;import org.apache.commons.io.FileUtils; import web.Base

Struts 2 檔案下載

單個檔案上傳 表單設定enctype="multipart/form-data“ 表單設定method="POST“ <s:file name="f1" label="logo"/> 多檔案上傳: 把所有的屬性改為陣列即可。 private File []f1;

Struts2實現單檔案,檔案下載(十)

    “兩個蝴蝶飛”特別喜歡"java1234知識分享網"小峰的實用主義,所以本文及其系列文章均是採用實用主義,從專案和程式碼的角度去分析。由於本人經驗有限,嘴皮子不溜,所以學術性,概念性,底層性的知識點暫時不做介紹。文章中有錯誤之處,歡迎拍磚和指點。特別感謝"java12

SSH框架下使用Commons FileUpload控制元件完成檔案下載

某些系統中,經常需要用到上傳與下載功能,其中,如果指定了不同角色上傳多不同檔案,並且指定給其他角色進行下載。那麼一般最好的方法就是將檔案按照不同路徑上傳到不同的資料夾中,然後再在資料庫中存入檔案路徑。 比如在教務系統中,學生要求上傳自己的作業,然後給教師進行下

Struts檔案下載詳解 _檔案

     在上一篇中給大家列出的單個檔案的上傳,那麼這一篇咱們講講上傳多個檔案改怎麼作呢?由於過程和上傳單個檔案的類似,所以在這裡不細說,相信大家都能看懂,看不懂的可以在評論區留言,我看到之後會及時

struts2實現檔案下載功能

一、Demo介紹 基於struts2框架,實現多檔案的上傳和下載功能。 實現原理圖: 部分介面圖: 上傳成功及下載頁面: 二、主要程式碼 uploadFile.jsp:在form表單中包含一個文字框(上傳使用者的姓名)和兩個檔案上傳選項. <%@

Spring Boot——檔案下載

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apac

java web檔案下載

jsp程式碼(檔案上傳) <form id="upLoad" method="post">

struts2 檔案下載

檔案上傳: 三種上傳方案 虛擬路徑與真實路徑 /upload copyFile與copydirectory 檔案上傳的三種方案 1.將上傳的檔案以二進位制的形式存放到資料庫 oa系統 activiti工作流框架 2.將檔案上傳到檔案伺服器(硬碟足夠大)中 3.上傳到t

java:檔案下載

一.檔案上傳 1.注意: jsp提交方式必須為post 必須採用複雜格式 : enctype=“multipart/form-data” <form action="/upload" method="post" enctype="multipart/form

Spring 中的檔案下載控制

先建立根應用上下文配置,WebDemo/src/main/java/com/seliote/webdemo/config/RootContextConfig.java package com.seliote.webdemo.config; import org.springframework.c

Spring Boot 整合之檔案下載

1.匯入依賴 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId>

Java進階學習第十三天(檔案下載、JavaMail郵件開發)

一、檔案上傳與下載 1、檔案上傳 案例:登錄檔單/儲存商品等相關模組! 頭像 / 商品圖片(資料庫:儲存圖片路徑 / 圖片儲存到伺服器中指定的目錄) 2、檔案上傳要點 ① 表單提交方式:post ② 表單中有檔案上傳的表單項: <input type=”file” />

Struts2之檔案下載

1、檔案上傳三種方式: 將檔案以二進位制的形式儲存到資料庫中 activiti工作流框架  將檔案儲存到專門檔案伺服器(存放檔案用的Linux系統)中  直接將檔案儲存到伺服器(tomcat所在伺服器)中 2、檔案上傳的一個例項: action裡

基於TCP伺服器檔案下載

** ## service.c ** #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include &l

檔案下載的簡單案例

檔案上傳       同時構建這個controller的過程中遇到最大的一個bug是: 得構建一個檢視資源管理器,因為controller中必須得認識ModelAndView,String型別 沒有ModelA

PHP強化之13 - 檔案下載

一、檔案上傳 將客戶端檔案上傳到伺服器端,再將伺服器端的檔案(臨時檔案)移動到指定目錄即可。 1、form表單 檔案的上傳一般都是經過form表單來實現的。 1)標籤enctype屬性 表單中enctype="multipart/form-data"是用於設定表單的MIM

Java基於TCP協議的Socket客戶端檔案下載

import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.F

extjs列表中檔案下載(帶有重新命名操作)

下面是extjs列表中檔案上傳與下載: 如圖: 一、上傳 上傳按鈕: { xtype: 'button', width: 60, margin: '0 20', text: ' 上 傳 ', handler: 'onUploadClick' }] 上傳按