Package org.nutz.mvc.upload

Source Code of org.nutz.mvc.upload.UploadingContext

package org.nutz.mvc.upload;

import java.util.regex.Pattern;

import org.nutz.filepool.FilePool;
import org.nutz.filepool.NutFilePool;
import org.nutz.lang.Encoding;
import org.nutz.lang.Strings;
import org.nutz.log.Log;
import org.nutz.log.Logs;

/**
* 执行上传时一些必要的配置信息
*
* @author zozoh(zozohtnt@gmail.com)
*/
public class UploadingContext {
   
    private static final Log log = Logs.get();

    public static UploadingContext create(String poolPath) {
        return create(new NutFilePool(poolPath));
    }

    public static UploadingContext create(FilePool pool) {
        return new UploadingContext(pool);
    }

    public UploadingContext(String poolPath) {
        this(new NutFilePool(poolPath, 2000));
    }

    public UploadingContext(FilePool pool) {
        charset = Encoding.UTF8;
        bufferSize = 8192;
        this.filePool = pool;
    }

    /**
     * 默认为 UTF-8,上传字节流的编码
     */
    private String charset;

    /**
     * 临时文件池
     */
    private FilePool filePool;

    /**
     * 缓冲,默认 8192
     */
    private int bufferSize;

    /**
     * 是否忽略空文件,默认为 false
     */
    private boolean ignoreNull;

    /**
     * 如果大于0,对于每个上传的文件,都判断,如果超过了这个大小,则拒绝继续上传
     * <p>
     * 单位为字节
     */
    private int maxFileSize;

    /**
     * 一个正则表达式,描述了可以允许的文件名
     */
    private String nameFilter;

    /**
     * 一个正则表达式,描述了可以允许的文件内容类型
     */
    private String contentTypeFilter;

    public String getCharset() {
        return charset;
    }

    public UploadingContext setCharset(String charset) {
        this.charset = charset;
        return this;
    }

    public FilePool getFilePool() {
        return filePool;
    }

    public UploadingContext setFilePool(FilePool pool) {
        this.filePool = pool;
        return this;
    }

    public int getBufferSize() {
        return bufferSize;
    }

    public UploadingContext setBufferSize(int bufferSize) {
        this.bufferSize = bufferSize;
        if (bufferSize < 128 && log.isWarnEnabled()) {
            log.warn("Uploading buffer is less than 128!! Auto-fix to 128!! 8192 will be much better!!");
            this.bufferSize = 128;
        }
        return this;
    }

    public boolean isIgnoreNull() {
        return ignoreNull;
    }

    public UploadingContext setIgnoreNull(boolean ignoreNull) {
        this.ignoreNull = ignoreNull;
        return this;
    }

    public int getMaxFileSize() {
        return maxFileSize;
    }

    public UploadingContext setMaxFileSize(int maxFileSize) {
        this.maxFileSize = maxFileSize;
        return this;
    }

    public String getNameFilter() {
        return nameFilter;
    }

    public UploadingContext setNameFilter(String nameFilter) {
        this.nameFilter = nameFilter;
        return this;
    }

    public boolean isNameAccepted(String name) {
        if (null == nameFilter || Strings.isBlank(name)
                || "\"\"".equals(name)) //用户不选择文件时,文件名会是"" 两个双引号
            return true;
        return Pattern.matches(nameFilter, name.toLowerCase());
    }

    public String getContentTypeFilter() {
        return contentTypeFilter;
    }

    public UploadingContext setContentTypeFilter(String contentTypeFilter) {
        this.contentTypeFilter = contentTypeFilter;
        return this;
    }

    public boolean isContentTypeAccepted(String contentType) {
        if (null == contentTypeFilter || Strings.isBlank(contentType))
            return true;
        return Pattern.matches(contentTypeFilter, contentType.toLowerCase());
    }

}
TOP

Related Classes of org.nutz.mvc.upload.UploadingContext

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.