java使用smartupload組件實(shí)現(xiàn)文件上傳的方法_JSP教程
推薦:jsp利用application統(tǒng)計(jì)在線人數(shù)的方法這篇文章主要介紹了jsp利用application統(tǒng)計(jì)在線人數(shù)的方法,代碼中備有較為詳盡的注釋便于理解,是比較實(shí)用的技巧,需要的朋友可以參考下 本文實(shí)例講述了jsp利用application統(tǒng)計(jì)在線人數(shù)的方法。分享給大家供大家參考。 具體實(shí)現(xiàn)方法如下: 代碼如下:%@ page language=jav
這篇文章主要介紹了java使用smartupload組件實(shí)現(xiàn)文件上傳的方法,對(duì)比分析了使用組件與不使用組件實(shí)現(xiàn)文件上傳的區(qū)別,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了java使用smartupload組件實(shí)現(xiàn)文件上傳的方法。分享給大家供大家參考。具體分析如下:
文件上傳幾乎是所有網(wǎng)站都具有的功能,用戶可以將文件上傳到服務(wù)器的指定文件夾中,也可以保存在數(shù)據(jù)庫(kù)中,這里主要說(shuō)明smartupload組件上傳。
在講解smartupload上傳前,我們先來(lái)看看不使用組件是怎么完成上傳的原理的?
廢話不多說(shuō)直接上代碼:
代碼如下: import java.io.*;import java.util.*;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUploadTools {
private HttpServletRequest request = null; // 取得HttpServletRequest對(duì)象
private List<FileItem> items = null; // 保存全部的上傳內(nèi)容
private Map<String, List<String>> params = new HashMap<String, List<String>>(); // 保存所有的參數(shù)
private Map<String, FileItem> files = new HashMap<String, FileItem>();
private int maxSize = 3145728; // 默認(rèn)的上傳文件大小為3MB,3 * 1024 * 1024
public FileUploadTools(HttpServletRequest request, int maxSize,
String tempDir) throws Exception { // 傳遞request對(duì)象、最大上傳限制、臨時(shí)保存目錄
this.request = request; // 接收request對(duì)象
DiskFileItemFactory factory = new DiskFileItemFactory(); // 創(chuàng)建磁盤工廠
if (tempDir != null) { // 判斷是否需要進(jìn)行臨時(shí)上傳目錄
factory.setRepository(new File(tempDir)); // 設(shè)置臨時(shí)文件保存目錄
}
ServletFileUpload upload = new ServletFileUpload(factory); // 創(chuàng)建處理工具
if (maxSize > 0) { // 如果給的上傳大小限制大于0,則使用新的設(shè)置
this.maxSize = maxSize;
}
upload.setFileSizeMax(this.maxSize); // 設(shè)置最大上傳大小為3MB,3 * 1024 * 1024
try {
this.items = upload.parseRequest(request);// 接收全部?jī)?nèi)容
} catch (FileUploadException e) {
throw e; // 向上拋出異常
}
this.init(); // 進(jìn)行初始化操作
}
private void init() { // 初始化參數(shù),區(qū)分普通參數(shù)或上傳文件
Iterator<FileItem> iter = this.items.iterator();
IPTimeStamp its = new IPTimeStamp(this.request.getRemoteAddr()) ;
while (iter.hasNext()) { // 依次取出每一個(gè)上傳項(xiàng)
FileItem item = iter.next(); // 取出每一個(gè)上傳的文件
if (item.isFormField()) { // 判斷是否是普通的文本參數(shù)
String name = item.getFieldName(); // 取得表單的名字
String value = item.getString(); // 取得表單的內(nèi)容
List<String> temp = null; // 保存內(nèi)容
if (this.params.containsKey(name)) { // 判斷內(nèi)容是否已經(jīng)存放
temp = this.params.get(name); // 如果存在則取出
} else { // 不存在
temp = new ArrayList<String>(); // 重新開辟List數(shù)組
}
temp.add(value); // 向List數(shù)組中設(shè)置內(nèi)容
this.params.put(name, temp); // 向Map中增加內(nèi)容
} else { // 判斷是否是file組件
String fileName = its.getIPTimeRand()
+ "." + item.getName().split("\\.")[1];
this.files.put(fileName, item); // 保存全部的上傳文件
}
}
}
public String getParameter(String name) { // 取得一個(gè)參數(shù)
String ret = null; // 保存返回內(nèi)容
List<String> temp = this.params.get(name); // 從集合中取出內(nèi)容
if (temp != null) { // 判斷是否可以根據(jù)key取出內(nèi)容
ret = temp.get(0); // 取出里面的內(nèi)容
}
return ret;
}
public String[] getParameterValues(String name) { // 取得一組上傳內(nèi)容
String ret[] = null; // 保存返回內(nèi)容
List<String> temp = this.params.get(name); // 根據(jù)key取出內(nèi)容
if (temp != null) { // 避免NullPointerException
ret = temp.toArray(new String[] {});// 將內(nèi)容變?yōu)樽址當(dāng)?shù)組
}
return ret; // 變?yōu)樽址當(dāng)?shù)組
}
public Map<String, FileItem> getUploadFiles() {// 取得全部的上傳文件
return this.files; // 得到全部的上傳文件
}
public List<String> saveAll(String saveDir) throws IOException { // 保存全部文件,并返回文件名稱,所有異常拋出
List<String> names = new ArrayList<String>();
if (this.files.size() > 0) {
Set<String> keys = this.files.keySet(); // 取得全部的key
Iterator<String> iter = keys.iterator(); // 實(shí)例化Iterator對(duì)象
File saveFile = null; // 定義保存的文件
InputStream input = null; // 定義文件的輸入流,用于讀取源文件
OutputStream out = null; // 定義文件的輸出流,用于保存文件
while (iter.hasNext()) { // 循環(huán)取出每一個(gè)上傳文件
FileItem item = this.files.get(iter.next()); // 依次取出每一個(gè)文件
String fileName = new IPTimeStamp(this.request.getRemoteAddr())
.getIPTimeRand()
+ "." + item.getName().split("\\.")[1];
saveFile = new File(saveDir + fileName); // 重新拼湊出新的路徑
names.add(fileName); // 保存生成后的文件名稱
try {
input = item.getInputStream(); // 取得InputStream
out = new FileOutputStream(saveFile); // 定義輸出流保存文件
int temp = 0; // 接收每一個(gè)字節(jié)
while ((temp = input.read()) != -1) { // 依次讀取內(nèi)容
out.write(temp); // 保存內(nèi)容
}
} catch (IOException e) { // 捕獲異常
throw e; // 異常向上拋出
} finally { // 進(jìn)行最終的關(guān)閉操作
try {
input.close(); // 關(guān)閉輸入流
out.close(); // 關(guān)閉輸出流
} catch (IOException e1) {
throw e1;
}
}
}
}
return names; // 返回生成后的文件名稱
}
}
上面代碼便可以完成無(wú)組件上傳。
下面開始講解smartupload
分享:jsp分頁(yè)顯示完整實(shí)例這篇文章主要介紹了jsp分頁(yè)顯示完整實(shí)例,以文章管理頁(yè)面為例詳細(xì)分析了jsp的分頁(yè)顯示實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下 本文實(shí)例講述了jsp分頁(yè)顯示的實(shí)現(xiàn)方法。分享給大家供大家參考。 具體實(shí)現(xiàn)方法如下: 代碼如下:%@ page contentType=text/html;
- jsp利用application統(tǒng)計(jì)在線人數(shù)的方法
- jsp分頁(yè)顯示完整實(shí)例
- JSP 開發(fā)環(huán)境搭建
- JSP 生命周期
- jsp中URL傳遞中文參數(shù)的處理方法
- JSP 重置按鈕清空傳入的表單數(shù)據(jù)實(shí)例
- JSP中的倒數(shù)計(jì)時(shí)和自動(dòng)跳轉(zhuǎn)頁(yè)面
- JSP 獲取Spring 注入對(duì)象示例
- jsp文件怎么打開?
- JSP自定義標(biāo)簽的實(shí)現(xiàn)過(guò)程
- JSP教程:tomcat6關(guān)于EL表達(dá)式的一個(gè)錯(cuò)誤
- JSP上面實(shí)現(xiàn)目錄壓縮
JSP教程Rss訂閱編程教程搜索
JSP教程推薦
- 在J2ME網(wǎng)絡(luò)編程中使用CMWAP代理
- JSP網(wǎng)站開發(fā)環(huán)境的目錄結(jié)構(gòu)標(biāo)準(zhǔn)
- 詳細(xì)講解Linux系統(tǒng)下JDK、Tomcat的安裝
- 什么是模式?什么是框架?
- 加快JDBC中JSP數(shù)據(jù)庫(kù)的訪問(wèn)速度
- JSP頁(yè)面中文傳遞參數(shù)使用escape編碼
- AJAX實(shí)現(xiàn)web頁(yè)面級(jí)聯(lián)菜單
- jsp include引用非本級(jí)目錄網(wǎng)頁(yè)實(shí)現(xiàn)代碼
- JSP 相關(guān)對(duì)象的使用介紹
- 淺談Java 使用jdbc:odbc 建立無(wú)源連接access數(shù)據(jù)庫(kù)
猜你也喜歡看這些
- MVC模式在j2me項(xiàng)目中的應(yīng)用一
- Struts2訪問(wèn)servlet分享
- jsp連接數(shù)據(jù)庫(kù)oracle
- 在無(wú)線J2ME設(shè)備上實(shí)現(xiàn)HTTP協(xié)議1
- 基于JSP 自定義標(biāo)簽使用實(shí)例介紹
- Sun微系統(tǒng)預(yù)計(jì)下一代Java手機(jī)技術(shù)年內(nèi)將問(wèn)世
- Linux下Apache與Tomcat整合的簡(jiǎn)單方法
- JSP由淺入深11—— 標(biāo)記庫(kù)
- 解密21種Java開發(fā)中應(yīng)避免的錯(cuò)誤
- JSP新手入門初級(jí)教程之JSP概述
- 相關(guān)鏈接:
- 教程說(shuō)明:
JSP教程-java使用smartupload組件實(shí)現(xiàn)文件上傳的方法
。