久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java文件上傳類(lèi)FileUploadUtil.java代碼+注釋

 昵稱21365845 2015-06-04

一個(gè)通用的Java文件上傳類(lèi),,支持上傳圖片,,支持生成縮略圖,設(shè)置最大上傳文件字節(jié)數(shù),,不設(shè)置時(shí)默認(rèn)10M,,可接收來(lái)自表單的數(shù)據(jù),當(dāng)有多個(gè)文件域時(shí),,只上傳有文件的,,忽略其他不是文件域的所有表單信息,支持用戶對(duì)上傳文件大小,字節(jié)進(jìn)行設(shè)置,,本上傳類(lèi)可過(guò)濾掉以下文件類(lèi)型:".exe", ".com", ".cgi", ".asp", ".php", ".jsp"等,,你可自已添加過(guò)濾的文件后綴,上傳文件時(shí)如果沒(méi)有上傳目錄,,則自動(dòng)創(chuàng)建它,。。,。

package com.gootrip.util;
import java.io.File;
import java.util.*;
import org.apache.commons.fileupload.*;
import javax.servlet.http.HttpServletRequest;
import java.util.regex.Pattern;
import java.io.IOException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import java.util.regex.Matcher;
/**
 * TODO 要更改此生成的類(lèi)型注釋的模板,,請(qǐng)轉(zhuǎn)至
 * 窗口 - 首選項(xiàng) - Java - 代碼樣式 - 代碼模板
 */
public class FileUploadUtil {
    //當(dāng)上傳文件超過(guò)限制時(shí)設(shè)定的臨時(shí)文件位置,,注意是絕對(duì)路徑
    private String tempPath = null;
    //文件上傳目標(biāo)目錄,注意是絕對(duì)路徑
    private String dstPath = null;
    //新文件名稱,,不設(shè)置時(shí)默認(rèn)為原文件名
    private String newFileName = null;
    //獲取的上傳請(qǐng)求
    private HttpServletRequest fileuploadReq = null;
    //設(shè)置最多只允許在內(nèi)存中存儲(chǔ)的數(shù)據(jù),單位:字節(jié),,這個(gè)參數(shù)不要設(shè)置太大
    private int sizeThreshold = 4096;
    //設(shè)置允許用戶上傳文件大小,單位:字節(jié)
    //共10M
    private long sizeMax = 10485760;
    //圖片文件序號(hào)
    private int picSeqNo = 1;
    private boolean isSmallPic = false;
    public FileUploadUtil(){
    }
    public FileUploadUtil(String tempPath, String destinationPath){
        this.tempPath  = tempPath;
        this.dstPath = destinationPath;
    }
    public FileUploadUtil(String tempPath, String destinationPath, HttpServletRequest fileuploadRequest){
        this.tempPath   = tempPath;
        this.dstPath = destinationPath;
        this.fileuploadReq = fileuploadRequest;
    }
    /** 文件上載
     * @return true —— success; false —— fail.
     */
    public boolean Upload(){
        DiskFileItemFactory factory = new DiskFileItemFactory();
        try {
            //如果沒(méi)有上傳目的目錄,則創(chuàng)建它
            FileUtil.makeDirectory(dstPath+"/ddd");
            /*if (!FileUtil.makeDirectory(dstPath+"/ddd")) {
                throw new IOException("Create destination Directory Error.");
            }*/
            //如果沒(méi)有臨時(shí)目錄,,則創(chuàng)建它
            FileUtil.makeDirectory(tempPath+"/ddd");
            /*if (!FileUtil.makeDirectory(tempPath+"/ddd")) {
                throw new IOException("Create Temp Directory Error.");
            }*/
            //上傳項(xiàng)目只要足夠小,,就應(yīng)該保留在內(nèi)存里。
            //較大的項(xiàng)目應(yīng)該被寫(xiě)在硬盤(pán)的臨時(shí)文件上,。
            //非常大的上傳請(qǐng)求應(yīng)該避免,。
            //限制項(xiàng)目在內(nèi)存中所占的空間,限制最大的上傳請(qǐng)求,,并且設(shè)定臨時(shí)文件的位置,。
            //設(shè)置最多只允許在內(nèi)存中存儲(chǔ)的數(shù)據(jù),單位:字節(jié)
            factory.setSizeThreshold(sizeThreshold);
            // the location for saving data that is larger than getSizeThreshold()
            factory.setRepository(new File(tempPath));
            ServletFileUpload upload = new ServletFileUpload(factory);
            //設(shè)置允許用戶上傳文件大小,單位:字節(jié)
            upload.setSizeMax(sizeMax);
            List fileItems = upload.parseRequest(fileuploadReq);
            Iterator iter = fileItems.iterator();
            //  正則匹配,過(guò)濾路徑取文件名
            String regExp = ".+\\\\(.+)$";
            //  過(guò)濾掉的文件類(lèi)型
            String[] errorType = {".exe", ".com", ".cgi", ".asp", ".php", ".jsp"};
            Pattern p = Pattern.compile(regExp);
            while (iter.hasNext()) {
                System.out.println("++00++====="+newFileName);
                FileItem item = (FileItem) iter.next();
                //忽略其他不是文件域的所有表單信息
                if (!item.isFormField()) {
                    String name = item.getName();
                    System.out.println("++++====="+name);
                    long size = item.getSize();
                    //有多個(gè)文件域時(shí),,只上傳有文件的
                    if ((name == null || name.equals("")) && size == 0)
                        continue;
                    Matcher m = p.matcher(name);
                    boolean result = m.find();
                    if (result) {
                        for (int temp = 0; temp < errorType.length; temp++) {
                            if (m.group(1).endsWith(errorType[temp])) {
                                throw new IOException(name + ": Wrong File Type");
                            }
                        }
                        String ext = "."+FileUtil.getTypePart(name);
                        try {
                            //保存上傳的文件到指定的目錄
                            //在下文中上傳文件至數(shù)據(jù)庫(kù)時(shí),,將對(duì)這里改寫(xiě)
                            //沒(méi)有指定新文件名時(shí)以原文件名來(lái)命名
                            if (newFileName == null || newFileName.trim().equals(""))
                            {
                                item.write(new File(dstPath +"/"+ m.group(1)));
                            }
                            else
                            {
                                String uploadfilename = "";
                                if (isSmallPic)
                                {
                                    uploadfilename = dstPath +"/"+ newFileName+"_"+picSeqNo+"_small"+ext;
                                }
                                else
                                {
                                    uploadfilename = dstPath +"/"+ newFileName+"_"+picSeqNo+ext;
                                }
                                //生成所有未生成的目錄
                                System.out.println("++++====="+uploadfilename);
                                FileUtil.makeDirectory(uploadfilename);
                                //item.write(new File(dstPath +"/"+ newFileName));
                                item.write(new File(uploadfilename));
                            }
                            picSeqNo++;
                            //out.print(name + "  " + size + "");
                        } catch (Exception e) {
                            //out.println(e);
                            throw new IOException(e.getMessage());
                        }
                    } else {
                        throw new IOException("fail to upload");
                    }
                }
            }
        } catch (IOException e) {
            System.out.println(e);
        } catch (FileUploadException e) {
            System.out.println(e);
        }
        return true;
    }
    /**從路徑中獲取單獨(dú)文件*/
    public String GetFileName(String filepath)
    {
        String returnstr = "*.*";
        int length       = filepath.trim().length();
        filepath = filepath.replace('\\', '/');
        if(length >0)
        {
            int i = filepath.lastIndexOf("/");
            if (i >= 0)
            {
                filepath  = filepath.substring(i + 1);
                returnstr = filepath;
            }
        }
        return returnstr;
    }
    /**
     * 設(shè)置臨時(shí)存貯目錄
     */
    public void setTmpPath(String tmppath)
    {
        this.tempPath = tmppath;
    }
    /**
     * 設(shè)置目標(biāo)目錄
     */
    public void setDstPath(String dstpath) {
        this.dstPath = dstpath;
    }
    /**
     * 設(shè)置最大上傳文件字節(jié)數(shù),不設(shè)置時(shí)默認(rèn)10M
     */
    public void setFileMaxSize(long maxsize) {
        this.sizeMax = maxsize;
    }
    /**
     * 設(shè)置Http 請(qǐng)求參數(shù),,通過(guò)這個(gè)能數(shù)來(lái)獲取文件信息
     */
    public void setHttpReq(HttpServletRequest httpreq) {
        this.fileuploadReq = httpreq;
    }
    /**
     * 設(shè)置Http 請(qǐng)求參數(shù),,通過(guò)這個(gè)能數(shù)來(lái)獲取文件信息
     */
    public void setNewFileName(String filename) {
        this.newFileName = filename;
    }
    /**
     * 設(shè)置此上傳文件是否是縮略圖文件,這個(gè)參數(shù)主要用于縮略圖命名
     */
    public void setIsSmalPic(boolean isSmallPic) {
        this.isSmallPic = isSmallPic;
    }
    /**
     * 設(shè)置Http 請(qǐng)求參數(shù),,通過(guò)這個(gè)能數(shù)來(lái)獲取文件信息
     */
    public void setPicSeqNo(int seqNo) {
        this.picSeqNo = seqNo;
    }
}

 可保存上述代碼為類(lèi)文件,,用在JAVA或JSP程序中,Java開(kāi)發(fā)的朋友們,,應(yīng)該會(huì)輕易使用它,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多