中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

java使用smartupload組件實現(xiàn)文件上傳的方法
來源:易賢網(wǎng) 閱讀:2897 次 日期:2015-02-03 15:01:52
溫馨提示:易賢網(wǎng)小編為您整理了“java使用smartupload組件實現(xiàn)文件上傳的方法”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了java使用smartupload組件實現(xiàn)文件上傳的方法,對比分析了使用組件與不使用組件實現(xiàn)文件上傳的區(qū)別,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了java使用smartupload組件實現(xiàn)文件上傳的方法。分享給大家供大家參考。具體分析如下:

文件上傳幾乎是所有網(wǎng)站都具有的功能,用戶可以將文件上傳到服務器的指定文件夾中,也可以保存在數(shù)據(jù)庫中,這里主要說明smartupload組件上傳。

在講解smartupload上傳前,我們先來看看不使用組件是怎么完成上傳的原理的?

廢話不多說直接上代碼:

代碼如下:

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對象

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; // 默認的上傳文件大小為3MB,3 * 1024 * 1024

public FileUploadTools(HttpServletRequest request, int maxSize,

String tempDir) throws Exception { // 傳遞request對象、最大上傳限制、臨時保存目錄

this.request = request; // 接收request對象

DiskFileItemFactory factory = new DiskFileItemFactory(); // 創(chuàng)建磁盤工廠

if (tempDir != null) { // 判斷是否需要進行臨時上傳目錄

factory.setRepository(new File(tempDir)); // 設置臨時文件保存目錄

}

ServletFileUpload upload = new ServletFileUpload(factory); // 創(chuàng)建處理工具

if (maxSize > 0) { // 如果給的上傳大小限制大于0,則使用新的設置

this.maxSize = maxSize;

}

upload.setFileSizeMax(this.maxSize); // 設置最大上傳大小為3MB,3 * 1024 * 1024

try {

this.items = upload.parseRequest(request);// 接收全部內(nèi)容

} catch (FileUploadException e) {

throw e; // 向上拋出異常

}

this.init(); // 進行初始化操作

}

private void init() { // 初始化參數(shù),區(qū)分普通參數(shù)或上傳文件

Iterator<FileItem> iter = this.items.iterator();

IPTimeStamp its = new IPTimeStamp(this.request.getRemoteAddr()) ;

while (iter.hasNext()) { // 依次取出每一個上傳項

FileItem item = iter.next(); // 取出每一個上傳的文件

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ù)組中設置內(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) { // 取得一個參數(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)樽址當?shù)組

}

return ret; // 變?yōu)樽址當?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(); // 實例化Iterator對象

File saveFile = null; // 定義保存的文件

InputStream input = null; // 定義文件的輸入流,用于讀取源文件

OutputStream out = null; // 定義文件的輸出流,用于保存文件

while (iter.hasNext()) { // 循環(huán)取出每一個上傳文件

FileItem item = this.files.get(iter.next()); // 依次取出每一個文件

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; // 接收每一個字節(jié)

while ((temp = input.read()) != -1) { // 依次讀取內(nèi)容

out.write(temp); // 保存內(nèi)容

}

} catch (IOException e) { // 捕獲異常

throw e; // 異常向上拋出

} finally { // 進行最終的關(guān)閉操作

try {

input.close(); // 關(guān)閉輸入流

out.close(); // 關(guān)閉輸出流

} catch (IOException e1) {

throw e1;

}

}

}

}

return names; // 返回生成后的文件名稱

}

}

上面代碼便可以完成無組件上傳。

下面開始講解smartupload

smartupload是由網(wǎng)站開發(fā)的一套上傳組件包,可以輕松的實現(xiàn)文件的上傳及下載功能,smartupload組件使用簡單、可以輕松的實現(xiàn)上傳文件類型的限制、也可以輕易的取得上傳文件的名稱、后綴、大小等。

smartupload本身是一個系統(tǒng)提供的jar包(smartupload.jar),用戶直接將此包放到classpath下即可,也可以直接將此包拷貝到TOMCAT_HOMElib目錄之中。

下面使用組件完成上傳

單一文件上傳:

代碼如下:

<html>

<head><title>smartupload組件上傳</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>

<body>

<form action="smartupload_demo01.jsp" method="post" enctype="multipart/form-data">

圖片<input type="file" name="pic">

<input type="submit" value="上傳">

</form>

</body>

</html>

jsp代碼:

smartupload_demo01.jsp

代碼如下:

<%@ page contentType="text/html" pageEncoding="utf-8"%>

<%@ page import="com.jspsmart.upload.*" %>

<html>

<head><title>smartupload組件上傳01</title></head>

<body>

<%

SmartUpload smart = new SmartUpload() ;

smart.initialize(pageContext) ; // 初始化上傳操作

smart.upload(); // 上傳準備

smart.save("upload") ; // 文件保存

out.print("上傳成功");

%>

</body>

</html>

批量上傳:

html文件

代碼如下:

<html>

<head><title>smartupload組件上傳02</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>

<body>

<form action="smartupload_demo02.jsp" method="post" enctype="multipart/form-data">

圖片<input type="file" name="pic1"><br>

圖片<input type="file" name="pic2"><br>

圖片<input type="file" name="pic3"><br>

<input type="submit" value="上傳">

<input type="reset" value="重置">

</form>

</body>

</html>

jsp代碼

smartupload_demo02.jsp

代碼如下:

<%@ page contentType="text/html" pageEncoding="utf-8"%>

<%@ page import="com.jspsmart.upload.*"%>

<%@ page import="com.zhou.study.*"%>

<html>

<head><title>smartupload組件上傳02</title></head>

<body>

<%

SmartUpload smart = new SmartUpload() ;

smart.initialize(pageContext) ; // 初始化上傳操作

smart.upload() ; // 上傳準備

String name = smart.getRequest().getParameter("uname") ;

IPTimeStamp its = new IPTimeStamp("192.168.1.1") ; // 取得客戶端的IP地址

for(int x=0;x<smart.getFiles().getCount();x++){

String ext = smart.getFiles().getFile(x).getFileExt() ; // 擴展名稱

String fileName = its.getIPTimeRand() + "." + ext ;

smart.getFiles().getFile(x).saveAs(this.getServletContext().getRealPath("/")+"upload"+java.io.File.separator + fileName) ;

}

out.print("上傳成功");

%>

</body>

</html>

注意:在TOMCAT_HOME/項目目錄下建立upload文件夾才能正常運行!

簡單上傳操作上傳后的文件名稱是原本的文件名稱。可通過工具類重命名。

另附上重命名工具類。

代碼如下:

package com.zhou.study ;

import java.text.SimpleDateFormat ;

import java.util.Date ;

import java.util.Random ;

public class IPTimeStamp {

private SimpleDateFormat sdf = null ;

private String ip = null ;

public IPTimeStamp(){

}

public IPTimeStamp(String ip){

this.ip = ip ;

}

public String getIPTimeRand(){

StringBuffer buf = new StringBuffer() ;

if(this.ip != null){

String s[] = this.ip.split("\.") ;

for(int i=0;i<s.length;i++){

buf.append(this.addZero(s[i],3)) ;

}

}

buf.append(this.getTimeStamp()) ;

Random r = new Random() ;

for(int i=0;i<3;i++){

buf.append(r.nextInt(10)) ;

}

return buf.toString() ;

}

public String getDate(){

this.sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ;

return this.sdf.format(new Date()) ;

}

public String getTimeStamp(){

this.sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS") ;

return this.sdf.format(new Date()) ;

}

private String addZero(String str,int len){

StringBuffer s = new StringBuffer() ;

s.append(str) ;

while(s.length() < len){

s.insert(0,"0") ;

}

return s.toString() ;

}

public static void main(String args[]){

System.out.println(new IPTimeStamp().getIPTimeRand()) ;

}

}

附上使用方法:

代碼如下:

<html>

<head><title>smartupload上傳文件重命名</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head>

<body>

<form action="smartupload_demo03.jsp" method="post" enctype="multipart/form-data">

姓名<input type="text" name="uname"><br>

照片<input type="file" name="pic"><br>

<input type="submit" value="上傳">

<input type="reset" value="重置">

</form>

</body>

</html>

Jsp代碼:

smartupload_demo03.jsp

代碼如下:

<%@ page contentType="text/html" pageEncoding="utf-8"%>

<%@ page import="com.jspsmart.upload.*" %>

<%@ page import="com.zhou.study.*"%>

<html>

<head><title>smartupload</title></head>

<body>

<%

SmartUpload smart = new SmartUpload() ;

smart.initialize(pageContext) ; //初始化上傳操作

smart.upload() ; // 上傳準備

String name = smart.getRequest().getParameter("uname") ;

String str = new String(name.getBytes("gbk"), "utf-8"); //傳值過程中出現(xiàn)亂碼,在此轉(zhuǎn)碼

IPTimeStamp its = new IPTimeStamp("192.168.1.1") ; // 取得客戶端的IP地址

String ext = smart.getFiles().getFile(0).getFileExt() ; // 擴展名稱

String fileName = its.getIPTimeRand() + "." + ext ;

smart.getFiles().getFile(0).saveAs(this.getServletContext().getRealPath("/")+"upload"+java.io.File.separator + fileName) ;

out.print("上傳成功");

%>

<h2>姓名:<%=str%></h2>

<img src="https://upload.ynpxrz.com/upload/<%=fileName%>">

</body>

</html>

希望本文所述對大家的jsp程序設計有所幫助。

更多信息請查看IT技術(shù)專欄

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:java使用smartupload組件實現(xiàn)文件上傳的方法

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产一区二区激情| 欧美 日韩 国产一区二区在线视频 | 欧美日韩免费高清| 亚洲美女av在线播放| 亚洲国产天堂久久综合| 欧美va亚洲va日韩∨a综合色| avtt综合网| 国产日韩亚洲欧美综合| 蜜桃av久久久亚洲精品| 亚洲一卡二卡三卡四卡五卡| 好看的av在线不卡观看| 欧美日韩蜜桃| 久久精品国产久精国产思思| 亚洲精品极品| 国产日本欧美一区二区| 免费一区二区三区| 亚洲资源av| 最新日韩在线视频| 国产精品丝袜久久久久久app| 久久综合久久综合这里只有精品| 这里只有精品视频| 影音先锋久久久| 国产精品老牛| 欧美黑人一区二区三区| 欧美在线视频免费播放| 日韩视频免费看| 国产综合色产在线精品| 欧美特黄一区| 欧美二区乱c少妇| 久久精品成人一区二区三区蜜臀 | 久久久噜久噜久久综合| 国产精品99久久久久久久久| 亚洲国产99精品国自产| 亚洲手机成人高清视频| 在线欧美亚洲| 国产午夜一区二区三区| 欧美亚洲第一区| 欧美黑人一区二区三区| 久久av在线看| 亚洲一级特黄| 一区二区av在线| 91久久精品一区| 黄色精品一区| 国产一二精品视频| 国产精品久久网| 欧美色另类天堂2015| 欧美激情a∨在线视频播放| 久久久久久久久久久一区| 午夜视频久久久| 亚洲午夜国产一区99re久久| 日韩视频一区二区在线观看 | 久久久亚洲国产美女国产盗摄| 亚洲视屏在线播放| 99亚洲伊人久久精品影院红桃| 亚洲激情影视| 亚洲电影观看| 在线看日韩av| 亚洲国产高清一区| 香蕉国产精品偷在线观看不卡| 99国产麻豆精品| 亚洲美女视频| 亚洲精选视频在线| 亚洲黄一区二区| 91久久在线观看| 亚洲国产网站| 亚洲三级性片| 亚洲精品黄网在线观看| 亚洲精品免费一二三区| 亚洲日韩欧美视频| 亚洲美女中文字幕| 亚洲免费精品| 在线视频日韩| 亚洲一区三区电影在线观看| 亚洲一区二区三区久久| 亚洲综合精品| 亚洲欧美一级二级三级| 欧美一区成人| 久久青草欧美一区二区三区| 久久婷婷国产麻豆91天堂| 久久一区二区三区av| 蜜桃av久久久亚洲精品| 欧美gay视频激情| 欧美精品1区2区3区| 欧美视频精品一区| 国产精品一区=区| 国产专区精品视频| 亚洲国产99精品国自产| 日韩午夜在线观看视频| 亚洲影院免费观看| 久久精品国产69国产精品亚洲 | 狠狠综合久久av一区二区小说 | 国产伦精品一区二区三区免费迷| 国产欧美日韩精品丝袜高跟鞋 | 久热成人在线视频| 欧美精品二区三区四区免费看视频| 欧美精品激情blacked18| 欧美日韩在线直播| 国产亚洲欧美一区| 亚洲国产成人精品久久久国产成人一区 | 久久久国产精品一区| 久久综合久久综合这里只有精品| 欧美成人xxx| 欧美久久影院| 国产精品亚洲第一区在线暖暖韩国| 国产亚洲福利社区一区| 亚洲国产日韩欧美在线图片 | 亚洲国产日韩一级| 亚洲一区在线播放| 老鸭窝91久久精品色噜噜导演| 欧美片在线播放| 国产亚洲视频在线观看| 日韩视频在线一区| 午夜视频在线观看一区| 欧美夫妇交换俱乐部在线观看| 国产精品久久国产精品99gif| 精品av久久久久电影| 99视频一区二区| 久久精品国产一区二区三区免费看| 欧美激情精品| 国产婷婷精品| 99re66热这里只有精品4| 久久国产欧美精品| 欧美日韩国产区一| 狠狠色综合网| 亚洲一区精彩视频| 欧美成人精品一区| 国产一区二区成人| av成人天堂| 玖玖精品视频| 国产欧美三级| 9久re热视频在线精品| 久久久精品五月天| 国产精品欧美激情| 亚洲免费黄色| 免费视频一区| 国产一区二区日韩精品| 亚洲小说区图片区| 欧美了一区在线观看| 激情综合电影网| 先锋影音久久久| 欧美性片在线观看| 亚洲精品乱码久久久久久蜜桃91| 久久精品国产亚洲一区二区| 国产精品久久网站| 日韩一级成人av| 欧美成人中文| 亚洲电影免费在线| 久久九九精品99国产精品| 国产精品女人网站| 一区二区三区精品| 欧美精品一区二区三区蜜臀| 久久av一区二区| 欧美日韩综合另类| 日韩视频亚洲视频| 欧美成人精品三级在线观看| 精品动漫3d一区二区三区| 新狼窝色av性久久久久久| 国产精品福利久久久| 99精品欧美| 欧美日韩欧美一区二区| 日韩视频一区二区三区| 欧美久久在线| 亚洲免费观看高清完整版在线观看熊| 美女被久久久| 亚洲韩国青草视频| 欧美不卡在线视频| 亚洲青色在线| 欧美人与禽性xxxxx杂性| 亚洲久久视频| 欧美日韩三区| 99亚洲视频| 国产精品mm| 午夜精品久久久久久久男人的天堂| 国产精品福利影院| 亚洲欧美韩国| 国产亚洲va综合人人澡精品| 欧美主播一区二区三区美女 久久精品人 | 亚洲精品国产精品国自产在线| 欧美不卡在线| 日韩亚洲不卡在线| 国产精品v欧美精品v日韩精品| 亚洲一区二区视频在线观看| 国产精品日韩在线一区| 西瓜成人精品人成网站| 国产亚洲综合性久久久影院| 久久香蕉国产线看观看av| 亚洲国产人成综合网站| 欧美日韩福利视频| 亚洲午夜久久久久久久久电影院| 国产精品国产自产拍高清av| 午夜久久久久久久久久一区二区| 国产网站欧美日韩免费精品在线观看| 久久久久国产精品一区二区| 亚洲丶国产丶欧美一区二区三区| 欧美精品久久一区| 亚洲免费在线电影| 影音先锋日韩精品| 欧美日韩国产二区| 午夜在线一区二区| 亚洲国产影院|