求一个组件上传EXCEL的问题 需求是这样的,我要在serlvet里判断上传的文件绝对是excel文件,目的是担心用户把其他文件扩展名改成xls类型上传带来的安全性问题,谢谢各位!excel扩展 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// <summary>/// 判断文件是否为EXCEL。/// </summary>/// <param name="p_filePath"></param>/// <returns></returns>private bool isExcelFile(string p_filePath){ FileStream fs = new FileStream(p_filePath, FileMode.Open, FileAccess.Read); byte[] b = new byte[4]; string str = ""; if (Convert.ToInt32(fs.Length) > 0) { fs.Read(b, 0, 4); fs.Close(); for (int i = 0; i < b.Length; i++) { str += Convert.ToString(b[i], 16); } } return str.ToUpper() == "D0CF11E0" ? true : false;} 上传后,写个读取xls的方法,如果能读到里面的sheet、cell或者cell的值,能够读取应该就是xls文件,如果不能读取那么就不是xls文件。 试了一下效果,貌似可以的,我用的poi,你也可以用jxl。你看看可以不。package poi;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.log4j.Logger;import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class IsXLS { private static File file_one = new File("C:/Documents and Settings/Administrator/桌面/tset.xls"); private static File file_two = new File("C:/Documents and Settings/Administrator/桌面/1.xls"); private static Logger logger = Logger.getLogger(IsXLS.class); public static void main(String[] args) throws Exception { System.out.println(isXLSFile(file_one));// 真的xls文件 System.out.println(isXLSFile(file_two));// 假的xls文件 } /** * 验证XLS文件真假 * @param file * @return */ public static boolean isXLSFile(File file) { boolean b = false; HSSFWorkbook workbook = null; FileInputStream in = null; try { in = new FileInputStream(file); if (in != null) { workbook = new HSSFWorkbook(in); if (workbook != null) { b = true; } } else { logger.info("这是空文件"); } } catch (Exception e) { // logger.info("这不是xls类型文件"); } finally { try { if (in != null) in.close(); in = null; } catch (IOException e) { e.printStackTrace(); } } return b; }} XFIRE调用.net的webservcie接口【急急急】 Date类型插入问题(急) '\n'字符问题 各位进来帮帮忙吧! 页面的title不能够及时反映 10 Q币求答:javascript中不能传值?? 关于日文系统,日文SQLserver 存储中文信息? 文件改名失败、异常却无法捕捉。。。 请问怎样根据输入条件动态从数据库提取出数据? 怎样控制用户直接在地址栏输入URL不能进入页面? 导出PDF EJB 操作mysql关于主键的生成策略(谢谢,在线等)
/// <summary>
/// 判断文件是否为EXCEL。
/// </summary>
/// <param name="p_filePath"></param>
/// <returns></returns>
private bool isExcelFile(string p_filePath)
{
FileStream fs = new FileStream(p_filePath, FileMode.Open, FileAccess.Read);
byte[] b = new byte[4];
string str = "";
if (Convert.ToInt32(fs.Length) > 0)
{
fs.Read(b, 0, 4);
fs.Close();
for (int i = 0; i < b.Length; i++)
{
str += Convert.ToString(b[i], 16);
}
}
return str.ToUpper() == "D0CF11E0" ? true : false;
}
import java.io.FileInputStream;
import java.io.IOException;import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class IsXLS {
private static File file_one = new File("C:/Documents and Settings/Administrator/桌面/tset.xls");
private static File file_two = new File("C:/Documents and Settings/Administrator/桌面/1.xls");
private static Logger logger = Logger.getLogger(IsXLS.class);
public static void main(String[] args) throws Exception {
System.out.println(isXLSFile(file_one));// 真的xls文件
System.out.println(isXLSFile(file_two));// 假的xls文件
} /**
* 验证XLS文件真假
* @param file
* @return
*/
public static boolean isXLSFile(File file) {
boolean b = false;
HSSFWorkbook workbook = null;
FileInputStream in = null;
try {
in = new FileInputStream(file);
if (in != null) {
workbook = new HSSFWorkbook(in);
if (workbook != null) {
b = true;
}
} else {
logger.info("这是空文件");
}
} catch (Exception e) {
// logger.info("这不是xls类型文件");
} finally {
try {
if (in != null)
in.close();
in = null;
} catch (IOException e) {
e.printStackTrace();
}
}
return b;
}
}