精华内容
下载资源
问答
  • public final classFileTypeJudge {/*** Constructor*/privateFileTypeJudge() {}/*** 将文件头转换成16进制字符串**@param原生byte*@return16进制字符串*/private static String bytesToHexString(byte[] src) {...

    public final classFileTypeJudge {/*** Constructor*/

    privateFileTypeJudge() {

    }/*** 将文件头转换成16进制字符串

    *

    *@param原生byte

    *@return16进制字符串*/

    private static String bytesToHexString(byte[] src) {

    StringBuilder stringBuilder= newStringBuilder();if (src == null || src.length <= 0) {return null;

    }for (int i = 0; i < src.length; i++) {int v = src[i] & 0xFF;

    String hv=Integer.toHexString(v);if (hv.length() < 2) {

    stringBuilder.append(0);

    }

    stringBuilder.append(hv);

    }returnstringBuilder.toString();

    }/*** 得到文件头

    *

    *@paramfilePath

    * 文件路径

    *@return文件头

    *@throwsIOException*/

    private static String getFileContent(InputStream is) throwsIOException {byte[] b = new byte[28];

    InputStream inputStream= null;try{

    is.read(b,0, 28);

    }catch(IOException e) {

    e.printStackTrace();throwe;

    }finally{if (inputStream != null) {try{

    inputStream.close();

    }catch(IOException e) {

    e.printStackTrace();throwe;

    }

    }

    }returnbytesToHexString(b);

    }/*** 判断文件类型

    *

    *@paramfilePath

    * 文件路径

    *@return文件类型*/

    public static FileType getType(InputStream is) throwsIOException {

    String fileHead=getFileContent(is);if (fileHead == null || fileHead.length() == 0) {return null;

    }

    fileHead=fileHead.toUpperCase();

    FileType[] fileTypes=FileType.values();for(FileType type : fileTypes) {if(fileHead.startsWith(type.getValue())) {returntype;

    }

    }return null;

    }/***

    *@paramvalue 表示文件类型

    *@return1 表示图片,2 表示文档,3 表示视频,4 表示种子,5 表示音乐,6 表示其它

    *@return

    */

    public staticInteger isFileType(FileType value) {

    Integer type= 6;//其他//图片

    FileType[] pics ={ FileType.JPEG, FileType.PNG, FileType.GIF, FileType.TIFF, FileType.BMP, FileType.DWG, FileType.PSD };

    FileType[] docs={ FileType.RTF, FileType.XML, FileType.HTML, FileType.CSS, FileType.JS, FileType.EML, FileType.DBX, FileType.PST, FileType.XLS_DOC, FileType.XLSX_DOCX, FileType.VSD,

    FileType.MDB, FileType.WPS, FileType.WPD, FileType.EPS, FileType.PDF, FileType.QDF, FileType.PWL, FileType.ZIP, FileType.RAR, FileType.JSP, FileType.JAVA, FileType.CLASS,

    FileType.JAR, FileType.MF, FileType.EXE, FileType.CHM };

    FileType[] videos={ FileType.AVI, FileType.RAM, FileType.RM, FileType.MPG, FileType.MOV, FileType.ASF, FileType.MP4, FileType.FLV, FileType.MID };

    FileType[] tottents={ FileType.TORRENT };

    FileType[] audios={ FileType.WAV, FileType.MP3 };

    FileType[] others={};//图片

    for(FileType fileType : pics) {if(fileType.equals(value)) {

    type= 1;

    }

    }//文档

    for(FileType fileType : docs) {if(fileType.equals(value)) {

    type= 2;

    }

    }//视频

    for(FileType fileType : videos) {if(fileType.equals(value)) {

    type= 3;

    }

    }//种子

    for(FileType fileType : tottents) {if(fileType.equals(value)) {

    type= 4;

    }

    }//音乐

    for(FileType fileType : audios) {if(fileType.equals(value)) {

    type= 5;

    }

    }returntype;

    }public static void main(String args[]) throwsException {

    System.out.println(

    FileTypeJudge.isFileType(

    FileTypeJudge.getType(newFileInputStream(new File("C:\\Users\\ituser1\\Desktop\\123.pptx")))));for(FileType type : FileType.values()) {

    System.out.print(type+ "\t");

    }

    }

    }

    展开全文
  • /*-----------------------------------------文件上传前台控制检测程序v0.5检测上传文件类型检测图片文件格式是否正确检测图片文件大小检测图片文件宽度检测图片文件高度For51js.comAuthor:333Date:2005/08/26...

    文件上传前台控制检测程序 v0.5

    检测上传文件类型

    检测图片文件格式是否正确

    检测图片文件大小

    检测图片文件宽度

    检测图片文件高度

    For 51js.com Author:333 Date:2005/08/26

    UpDate:2005/08/27

    ------------------------------------------*/var ImgObj=newImage();//建立一个图像对象var AllImgExt=".jpg|.jpeg|.gif|"//全部图片格式类型var FileObj,ImgFileSize,ImgWidth,ImgHeight,FileExt,ErrMsg//全局变量 图片相关属性//以下为限制变量var AllowExt=".jpg|.gif|.doc|.txt|.midi|.jpeg|.mid|"//允许上传的文件类型 ?为无限制 每个扩展名后边要加一个"|" 小写字母表示//var AllowExt=0var AllowImgFileSize=0;//允许上传图片文件的大小 0为无限制  单位:KBvar AllowImgWidth="?";//允许上传的图片的宽度 ?为无限制 单位:px(像素)var AllowImgHeight="?";//允许上传的图片的高度 ?为无限制 单位:px(像素)function CheckProperty(obj)//检测图像属性{

    FileObj=obj;if(ErrMsg!="")//检测是否为正确的图像文件 返回出错信息并重置{

    FileObj.outerHTML=FileObj.outerHTML;

    alert(ErrMsg);returnfalse;//返回}if(ImgObj.readyState!="complete")//如果图像是未加载完成进行循环检测{

    setTimeout("CheckProperty(FileObj)",500);returnfalse;

    }

    ImgFileSize=Math.round(ImgObj.fileSize/1024);//取得图片文件的大小ImgWidth=ImgObj.width//取得图片的宽度ImgHeight=ImgObj.height;//取得图片的高度if(AllowImgWidth!=0&&AllowImgWidth

    ErrMsg=ErrMsg+"\n图片宽度超过限制。请上传宽度小于"+AllowImgWidth+"px的文件,当前图片宽度为"+ImgWidth+"px";if(AllowImgHeight!=0&&AllowImgHeight

    ErrMsg=ErrMsg+"\n图片高度超过限制。请上传高度小于"+AllowImgHeight+"px的文件,当前图片高度为"+ImgHeight+"px";if(AllowImgFileSize!=0&&AllowImgFileSize

    ErrMsg=ErrMsg+"\n图片文件大小超过限制。请上传小于"+AllowImgFileSize+"KB的文件,当前文件大小为"+ImgFileSize+"KB";if(ErrMsg!="")//返回出错信息并重置{

    FileObj.outerHTML=FileObj.outerHTML;

    alert(ErrMsg);

    }

    }

    ImgObj.οnerrοr=function(){ErrMsg='\n图片格式不正确或者图片已损坏!'}

    function CheckExt(obj)

    {

    ErrMsg=""FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();if(AllowExt!=0&&AllowExt.indexOf(FileExt+"|")==-1)//判断文件类型是否允许上传{

    ErrMsg="该文件类型不允许上传。请上传"+AllowExt+"类型的文件,当前文件类型为"+FileExt;

    obj.outerHTML=obj.outerHTML;

    alert(ErrMsg);returnfalse;

    }if(AllImgExt.indexOf(FileExt+"|")!=-1)//如果图片文件,则进行图片信息处理{

    ImgObj.src=obj.value;

    CheckProperty(obj);returnfalse;

    }

    }

    展开全文
  • 前言(转https://blog.csdn.net/t894690230/article/details/51242110)文件上传功能是很多网站都必须的功能,而判断文件类型不仅可以过滤文件的上传,同时也能防范用户上传恶意的可执行文件和脚本,以及将文件上传...

    前言(转https://blog.csdn.net/t894690230/article/details/51242110)

    文件上传功能是很多网站都必须的功能,而判断文件类型不仅可以过滤文件的上传,同时也能防范用户上传恶意的可执行文件和脚本,以及将文件上传服务器当作免费的文件存储服务器使用。

    而对于上传文件来说,不能简单的通过后缀名来判断文件的类型,因为恶意攻击可以将可执行文件的后缀名称改为图片或者其他格式,诱导用户执行,因此,判断上传文件的类型需要更安全的方式。

    与Java的class文件类似,很多类型的文件,起始的几个字节内容都是固定的,跟据这几个字节的内容,就可以判断文件的类型,这几个字节也被称为“魔数”,比如class文件的魔数就是“CAFEBABE”。

    通过魔数判断文件类型便是一种更安全的方式,其示例源码如下。

    1.新建一个文件类型的枚举类

    public enumFileType {/**JPEG*/JPEG("FFD8FF"),/**PNG*/PNG("89504E47"),/**GIF*/GIF("47494638"),/**TIFF*/TIFF("49492A00"),/**Windows bitmap*/BMP("424D"),/**CAD*/DWG("41433130"),/**Adobe photoshop*/PSD("38425053"),/**Rich Text Format*/RTF("7B5C727466"),/**XML*/XML("3C3F786D6C"),/**HTML*/HTML("68746D6C3E"),/**Outlook Express*/DBX("CFAD12FEC5FD746F "),/**Outlook*/PST("2142444E"),/**doc;xls;dot;ppt;xla;ppa;pps;pot;msi;sdw;db*/OLE2("0xD0CF11E0A1B11AE1"),/**Microsoft Word/Excel*/XLS_DOC("D0CF11E0"),/**Microsoft Access*/MDB("5374616E64617264204A"),/**Word Perfect*/WPB("FF575043"),/**Postscript*/EPS_PS("252150532D41646F6265"),/**Adobe Acrobat*/PDF("255044462D312E"),/**Windows Password*/PWL("E3828596"),/**ZIP Archive*/ZIP("504B0304"),/**ARAR Archive*/RAR("52617221"),/**WAVE*/WAV("57415645"),/**AVI*/AVI("41564920"),/**Real Audio*/RAM("2E7261FD"),/**Real Media*/RM("2E524D46"),/**Quicktime*/MOV("6D6F6F76"),/**Windows Media*/ASF("3026B2758E66CF11"),/**MIDI*/MID("4D546864");private String value = "";privateFileType(String value) {this.value =value;

    }publicString getValue() {returnvalue;

    }public voidsetValue(String value) {this.value =value;

    }

    }

    2.新建一个文件工具类,用来判断上传文件的类型

    importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStream;public classFilUtil {/**判断文件类型*/

    public static FileType getType(String filePath) throwsIOException {//获取文件头

    String fileHead =getFileHeader(filePath);if (fileHead != null && fileHead.length() > 0) {

    fileHead=fileHead.toUpperCase();

    FileType[] fileTypes=FileType.values();for(FileType type : fileTypes) {if(fileHead.startsWith(type.getValue())) {returntype;

    }

    }

    }return null;

    }/**读取文件头*/

    private static String getFileHeader(String filePath) throwsIOException {byte[] b = new byte[28];

    InputStream inputStream= null;try{

    inputStream= newFileInputStream(filePath);

    inputStream.read(b,0, 28);

    }finally{if (inputStream != null) {

    inputStream.close();

    }

    }returnbytesToHex(b);

    }/**将字节数组转换成16进制字符串*/

    public static String bytesToHex(byte[] src){

    StringBuilder stringBuilder= new StringBuilder("");if (src == null || src.length <= 0) {return null;

    }for (int i = 0; i < src.length; i++) {int v = src[i] & 0xFF;

    String hv=Integer.toHexString(v);if (hv.length() < 2) {

    stringBuilder.append(0);

    }

    stringBuilder.append(hv);

    }returnstringBuilder.toString();

    }

    }

    以上,需要注意的是,可能存在一种类型文件的魔数与另一种类型文件魔数的前面部分相等(如‘D0CF11E0’与‘D0CF11E0A1B11AE1’),所以应该尽量将更长的魔数值放在上面。这里的文件与魔数枚举得也不全面,但思路就这样吧。

    展开全文
  • java上传文件类型检测

    2019-09-22 18:50:36
    在进行文件上传时,特别是向普通用户开放文件上传功能时,需要对上传文件的格式进行控制,以防止黑客将病毒脚本上传。单纯的将文件名的类型进行截取的方式非常容易遭到破解,上传者只需要将病毒改换文件名便可以完成...

    在进行文件上传时,特别是向普通用户开放文件上传功能时,需要对上传文件的格式进行控制,以防止黑客将病毒脚本上传。单纯的将文件名的类型进行截取的方式非常容易遭到破解,上传者只需要将病毒改换文件名便可以完成上传。

    可以读取文件的十六进制的文件头,来判断文件真正的格式。

    读取文件的二进制数据并将其转换为十六进制时,同类型文件的文件头数据是相同的,即使改变了其后缀,这个数据也不会改变

    import java.io.*;
    import java.util.HashMap;
    
    public class GetFileType {
    
            // 缓存文件头信息-文件头信息
            public static final HashMap<String, String> mFileTypes = new HashMap<String, String>();
            static {
                mFileTypes.put("FFD8FFE0","jpg");
                mFileTypes.put("89504E47","png");
                mFileTypes.put("424DC6CC","bmp");
                mFileTypes.put("47494638","gif");
            }
            /**
         * 根据文件路径获取文件头信息
         *
         * @param filePath 文件路径
         * @return 文件头信息
         */
        public static String getFileType(String filePath) {
            String type = getFileHeader(filePath);
            System.out.println(type);
            return mFileTypes.get(type);
        }
    
        /**
         * 根据文件路径获取文件头信息
         *
         * @param filePath 文件路径
         * @return 文件头信息
         */
        public static String getFileHeader(String filePath) {
            FileInputStream is = null;
            String value = null;
            try {
                is = new FileInputStream(filePath);
                byte[] b = new byte[4];
                /*
                 * int read() 从此输入流中读取一个数据字节。 int read(byte[] b) 从此输入流中将最多 b.length
                 * 个字节的数据读入一个 byte 数组中。 int read(byte[] b, int off, int len)
                 * 从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
                 */
                is.read(b, 0, b.length);
                value = bytesToHexString(b);
            } catch (Exception e) {
            } finally {
                if (null != is) {
                    try {
                        is.close();
                    } catch (IOException e) {
                    }
                }
            }
            return value;
        }
    
        /**
         * 将要读取文件头信息的文件的byte数组转换成string类型表示
         *
         * @param src 要读取文件头信息的文件的byte数组
         * @return 文件头信息
         */
        private static String bytesToHexString(byte[] src) {
            StringBuilder builder = new StringBuilder();
            if (src == null || src.length <= 0) {
                return null;
            }
            String hv;
            for (int i = 0; i < src.length; i++) {
                // 以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式,并转换为大写
                hv = Integer.toHexString(src[i] & 0xFF).toUpperCase();
                if (hv.length() < 2) {
                    builder.append(0);
                }
                builder.append(hv);
            }
            return builder.toString();
        }
    
        public static void main(String[] args) {
            String path = "E:/file/2.png";
            String type = getFileType(path);
            System.out.println(type);
            path = "E:/file/timg.jpg";
            type = getFileType(path);
            System.out.println(type);
            path = "E:/file/bmp.bmp";
            type = getFileType(path);
            System.out.println(type);
            path = "E:/file/winter.gif";
            type = getFileType(path);
            System.out.println(type);
        }
    
    }

    运行输出

    89504E47
    png
    FFD8FFE0
    jpg
    424DC6CC
    bmp
    47494638
    gif

    转载于:https://www.cnblogs.com/baby123/p/11322972.html

    展开全文
  • 情景再现:上传文件到.net(wcf)后台时,总是上传不成功,后台要求Content-Type是application/octet-stream,我使用multipart/form-data方式,content-type是multipart/form-data,后来查了查这是两种不同的内容类型,...
  • 本文实例为大家分享了文件... 指定表单类型:默认类型:enctype="application/x-www-form-urlencoded"文件上传类型:multipart/form-dataFileUpload文件上传功能开发中比较常用,apache也提供了文件上传组件!FileUp...
  • [Java教程]JavaScript 文件上传类型判断0 2014-04-17 15:00:14文件上传时用到一个功能,使用html元素的input标签实现,选中图片后立即触发onchange事件上传图片,但是重复选择相同的图片不会触发onchang事件,解决...
  • 对于文件上传,相信大家都不会陌生,我们都知道,文件在上传到服务器的过程中,都是以流的形式传输的,在后台处理文件上传的代码中,获得这个流,然后读取数据流将之保存到上传文件的临时目录中,如果有使用到...
  • 主要介绍了java实现上传文件类型检测过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 导包commons-fileuploadcommons-fileupload1.3.1ssm 需要配置 springmvc.xml 配置文件中配置文件上传解析器:创建文件给工具类 FileUtil.javapackage com.shiro.utils;import org.springframework.web.multipart....
  • Java文件上传

    2020-12-10 09:00:59
    一、文件上传的注意事项 为保证服务器安全,上传的文件应该放在外界无法直接访问的目录下,例如放在WEB-INF目录下。 为了防止文件覆盖的现象,要为上传的文件产生一个唯一的文件名(可以为每一个文件增加一个uuid...
  • /*** 各种文件上传与判断* types 文件类型(1图片 2视频 3文件)*/@RequestMapping(method = RequestMethod.POST, path = "/uploadFile")@ResponseBodypublic Object uploadFile(@RequestPart("file") MultipartFile ...
  • public enum FileType { /** * JEPG.... * PNG.... * GIF.... * TIFF.... * Windows Bitmap.... * 将文件头转换成16进制字符串 * * @param 原生byte * @return 16进制字符串 */ private ...
  • java文件上传下载

    2012-06-14 09:32:09
    使用servlet实现的java文件上传下载。文件上传有文件类型,大小限制,下载采用流的输出。
  • import java.io.*;...public classGetFileType {//缓存文件头信息-文件头信息public static final HashMap mFileTypes = new HashMap();static{mFileTypes.put("FFD8FFE0","jpg");mFileTypes.put("89504E47...
  • java 文件上传

    2020-07-26 20:21:15
    (1)设置input的type类型为file,代表用于文件上传。 (2)accept属性,它规定能够通过文件上传进行提交的文件类型。accept值是MIME 类型列表,多个类型之间用逗号隔开 (3)multiple 属性是 HTML5 中的新属性。属性规定...
  • 本文实例为大家分享了文件... 指定表单类型:默认类型:enctype="application/x-www-form-urlencoded"文件上传类型:multipart/form-dataFileUpload文件上传功能开发中比较常用,apache也提供了文件上传组件!FileUp...
  • 文件上传方法(一次上传一个文件,多个文件的话,请写循环调用)Upload.uploadFile(theFile, filePath)说明:theFile:类型是FormFilefilePath:action中路径获取方法 this.getServlet().getServletContext()....
  • importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.io...
  • java文件上传

    2018-07-10 12:04:55
    前台页面部分,这是我做的前端部分的一部分,用以实现文件上传,任何文件都可以添加上传,对应上传文件是否为图片,在后台部分判断。上传其他文件也可以使用本方法,只要改动后台的文件类型判断就行。 注:data-...
  • 我们的java上传文件,需要form同步上传,并且需要设置enctype为multipart/form-data。如果将form使用ajax异步提交的话,将会报错说enctype不是multipart/form-data类型但有时候确实又有酱紫的需求,可以实现,需要...
  • 在表单元素中enctype属性指定了传递给服务器的表单数据集编码的内容类型,它的默认值是“application/x-www-form-urlencoded”,用于通常的数据提交格式,enctype属性有三个值: application/x-www-form-ur...
  • 指定表单类型:默认类型:enctype="application/x-www-form-urlencoded"文件上传类型:multipart/form-dataFileUpload文件上传功能开发中比较常用,apache也提供了文件上传组件!FileUpload组件:1. 下载源码2. 项目...
  • 注意事项在Web应用中,文件上传和下载功能是非常常用的功能,对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的【文件上传的注意事项】为保证服务器安全,上传文件应该放在外界无法直接访问的...
  • /*** 上传文件* @param source 源文件的绝对路径* @param dis 目标文件的路径* @param fileType 允许上传文件类型列表* @return*/public String uploadFile(String source, String dis, List fileType) {String ...
  • publicclassFileUploadUtil{publicstaticfinalListALLOW_TYPES=Arrays.asList("image/jpg","image/jpeg","image/png","image/gif");//文件重命名publicstaticStringrename(StringfileName){inti=fileName...
  • 本文实例为大家分享了java文件上传技术,供大家参考,具体内容如下表单:客户端发送HTTP必须使用multipart/form-data数据类型,表示复合数据类型。即:在表单中使用html标签。需要的包:Commons-fileupload.jar,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,855
精华内容 742
关键字:

java文件上传类型

java 订阅