package org.nutz.mvc.upload.injector; import java.io.File; import java.util.List; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.nutz.mvc.adaptor.ParamInjector; import org.nutz.mvc.upload.TempFile; public class FileInjector implements ParamInjector { public FileInjector(String name) { this.name = name; } private String name; @SuppressWarnings("unchecked") protected File getFile(Object refer) { Object obj = ((Map<String, Object>) refer).get(name); if (obj == null) return null; // Map 中只有可能有两种值, TempFile 或者 List<TempFile> // 如果是单一对象直接返回 if (obj instanceof TempFile) { return ((TempFile) obj).getFile(); } // 如果是列表,则取第一项 else { List<?> list = (List<?>) obj; if (list.isEmpty()) return null; else return ((TempFile) list.get(0)).getFile(); } } public Object get( ServletContext sc, HttpServletRequest req, HttpServletResponse resp, Object refer) { return getFile(refer); } }