⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractmultipartdecoder.java

📁 欢迎使用 FastJsp 开发框架! 编译说明: * 若要生成Api Javadoc文档
💻 JAVA
字号:
package com.onetsoft.fastjsp.request.multipart;

import com.onetsoft.fastjsp.ApplicationRuntimeException;
import com.onetsoft.fastjsp.request.UploadFile;
import org.apache.commons.fileupload.FileItem;

import java.io.UnsupportedEncodingException;
import java.text.MessageFormat;
import java.util.*;

abstract class AbstractMultipartDecoder implements MultipartDecoder {

    protected Map _uploadParts = new HashMap(8);
    private Map _valueParts = new HashMap(8);
    protected String _encoding;

    public UploadFile getFileUpload(String parameterName) {
        return (UploadFile) _uploadParts.get(parameterName);
    }

    public UploadFile[] getFileUploads() {
        Collection col = _uploadParts.values();
        return (UploadFile[]) col.toArray(new UploadFile[col.size()]);
    }


    public void cleanup() {
        for (Iterator iter = _uploadParts.values().iterator(); iter.hasNext();) {
            ((UploadPart) iter.next()).cleanup();
        }
    }

    /*解析参数,直接以PageParams 的参数map*/
    protected Map buildParameterMap(Map m) {
        Map.Entry e;
        String name;
        ValuePart part;
        for (Iterator iter = _valueParts.entrySet().iterator(); iter.hasNext();) {
            e = (Map.Entry) iter.next();
            name = (String) e.getKey();
            part = (ValuePart) e.getValue();
            //以满足page data处理方式解析参数,即更加值多少确定是否采用数组方式存储
            if (part.getCount() == 1)
                m.put(name, part.getValue());
            else
                m.put(name, part.getValues());
        }
        return m;
    }

    protected void processFileItems(List parts) {
        if (parts == null)
            return;
        for (Iterator iter = parts.iterator(); iter.hasNext();) {
            processFileItem((FileItem) iter.next());
        }
    }

    private void processFileItem(FileItem item) {
        if (item.isFormField())
            processFormFieldItem(item);
        else
            processUploadFileItem(item);
    }

    private void processUploadFileItem(FileItem item) {
        String name = item.getFieldName();
        UploadPart part = new UploadPart(item);
        _uploadParts.put(name, part);
    }

    void processFormFieldItem(FileItem item) {
        String name = item.getFieldName();
        String value = extractFileItemValue(item);
        ValuePart part = (ValuePart) _valueParts.get(name);
        if (part == null)
            _valueParts.put(name, new ValuePart(value));
        else
            part.add(value);
    }

    private String extractFileItemValue(FileItem item) {
        try {
            return (_encoding == null) ? item.getString() : item
                    .getString(_encoding);
        } catch (UnsupportedEncodingException ex) {
            throw new ApplicationRuntimeException(MessageFormat.format("Unsupported character encoding \"{0}\" " +
                    "when decoding multipart encoded request!", new Object[]{_encoding}));
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -