All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.j2mvc.framework.upload.ExtIcon Maven / Gradle / Ivy

Go to download

强烈建议使用J2mvc 2.1以后的版本。 version 2.1.01 1.优化路径跳转,Servlet和Filter方式的路径设置 2.优化内存销毁 3.更换JSON依赖包 4.优化接收方法RequestMethod,封装不同ContentType格式提交 封装JSON,XML数据提交模块 JSON请求示例 { "id":"JSON134851", "title":"JSON提交的标题", "price":65.1, "stock":100 } XML请求示例 <!DOCTYPE root [ <!ELEMENT root ANY> <!ATTLIST Product SSN ID #REQUIRED>]> <root> <Product SSN='id'>XMLID12354</Product> <Product SSN='title'>XML提交的标题 </Product> <Product SSN='price'>55 </Product> <Product SSN='stock'>32 </Product> </root> version 2.1.02 1.解决URL无后缀情况无法加载静态资源,解决无法渲染CSS文件。 version 2.1.03 1.移除com.j2mvc.StringUtils.getUtf8()方法调用 更改为getCharset() version 2.1.04 1.去除Servlet和Filter的全局变量销毁,只交给Listener处理。 version 2.1.05,2.1.06,2.1.07 1.完善POST提交的JSON数据 支持接收基础数据类型、任意对象类型、任意数组类型。 不支持接收参数为集合类型或Map类型,但可以定义为接收对象类型的元素。 version 2.1.05,2.1.06,2.1.07 1.修改连接池变量 version 2.1.09 增加上传功能,修改RequestMethod,ContentType设置方式 version 2.1.10,2.1.11 更改上传文件名格式为UUID格式,移除JSON映射类,更改接收多文件上传。 version 2.1.12 删除文件列有的空对象 version 2.1.13 增加配置文件目录/conf,加载上传功能配置/conf/upload.properties version 2.1.18 拦截器也能获取ActionBean version 2.1.20 添加上传文件只读权限 version 2.1.21 支持同时接收文件和文本数据 version 2.1.22 增加文件接收类型media version 2.1.23 删除upload类printJson方法

The newest version!
package com.j2mvc.framework.upload;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.j2mvc.util.Error;

/**
 * 上传文件后缀图标
 */
public class ExtIcon {

	public static abstract class Callback {
		/**
		 * 上传错误
		 * @param error
		 */
		public abstract void error(Error error);

		/**
		 * 上传完成
		 * @param fileInfos
		 */
		public abstract void success(String icon);
		
	};

	/**
	 * 构造器
	 * @param request
	 * @param response
	 * @throws IOException
	 */
	public ExtIcon(HttpServletRequest request, HttpServletResponse response,Callback callback) throws IOException{
		String contextPath = request.getContextPath();
		// 获取传来的文件名
		String filename = getParam(request,"filename");
		String iconPath = getParam(request,"iconPath");
		iconPath = iconPath.endsWith("/")?iconPath:iconPath+"/";
		String iconFilePath = "";
		if(!contextPath.equals("")&& iconPath.length()>contextPath.length())
			iconFilePath = iconPath.substring(contextPath.length(),iconPath.length());
		iconFilePath = request.getRealPath(iconFilePath);
		iconFilePath = iconFilePath.endsWith("/")?iconFilePath:iconFilePath+"/";
		
		if( !iconPath.equals("")){
			String fileExt = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
			String iconExt = fileExt+".png";
			File iconFile = new File(iconFilePath+iconExt);
			if(!iconFile.exists()){
				iconExt = "file.png";
			}		
			String icon = iconPath+iconExt;	
			callback.success(icon);
		}else {
			callback.error(new Error("未获取到icon路径"));
		}
		
	}
	/**
	 * 返回指定页面参数值
	 * @param request
	 * @param name
	 * @return
	 */
	private String getParam(HttpServletRequest request,String name){
		String value =  request.getParameter(name)!=null?request.getParameter(name).trim():"";
		return getUtf8(value);
	}
	/**
	 * 获取UTF8格式
	 * @param value
	 * @return
	 */
	private String getUtf8(String value){
		if(value == null)
			return "";
		try {
			if(java.nio.charset.Charset.forName("ISO-8859-1").newEncoder().canEncode(value)){
				value = new String(value.getBytes("ISO-8859-1"),"UTF-8");
			}else if(java.nio.charset.Charset.forName("UTF-8").newEncoder().canEncode(value)){
			}else if(java.nio.charset.Charset.forName("GBK").newEncoder().canEncode(value)){
				value = new String(value.getBytes("GBK"),"UTF-8");
			}else  if(java.nio.charset.Charset.forName("GB2312").newEncoder().canEncode(value)){
				value = new String(value.getBytes("GB2312"),"UTF-8");
			}
		} catch (Exception e) {
		}
		return value;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy