当前位置:编程学习 > JAVA >>

求一个组件上传EXCEL的问题

需求是这样的,我要在serlvet里判断上传的文件绝对是excel文件,目的是担心用户把其他文件扩展名改成xls类型上传带来的安全性问题,谢谢各位! excel 扩展 --------------------编程问答--------------------

/// <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;
}
}
--------------------编程问答--------------------
引用 4 楼 zakaz168 的回复:
上传后,写个读取xls的方法,如果能读到里面的sheet、cell或者cell的值,能够读取应该就是xls文件,如果不能读取那么就不是xls文件。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,