Python判断上传文件类型

在开发上传服务时,经常需要对上传的文件进行过滤。

本文为大家提供了python通过文件头判断文件类型的方法,非常实用。

代码如下


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

import struct 

# 支持文件类型 

# 用16进制字符串的目的是可以知道文件头是多少字节 

# 各种文件头的长度不一样,少半2字符,长则8字符 

def typeList(): 

  return 

    "52617221": EXT_RAR, 

    "504B0304": EXT_ZIP} 

 

# 字节码转16进制字符串 

def bytes2hex(bytes): 

  num = len(bytes) 

  hexstr = u"" 

  for in range(num): 

    = u"%x" % bytes[i] 

    if len(t) % 2

      hexstr += u"0"

    hexstr += 

  return hexstr.upper() 

 

# 获取文件类型 

def filetype(filename): 

  binfile = open(filename, ‘rb‘# 必需二制字读取 

  tl = typeList() 

  ftype = ‘unknown‘

  for hcode in tl.keys(): 

    numOfBytes = len(hcode) / 2 # 需要读多少字节 

    binfile.seek(0# 每次读取都要回到文件头,不然会一直往后读取 

    hbytes = struct.unpack_from("B"*numOfBytes, binfile.read(numOfBytes)) # 一个 "B"表示一个字节 

    f_hcode = bytes2hex(hbytes) 

    if f_hcode == hcode: 

      ftype = tl[hcode] 

      break

  #不要忘记关闭打开的文件,避免出现异常

  binfile.close() 

  return ftype

 

if __name__ == ‘__main__‘

  print filetype(‘pythontab.jpg‘)

常见文件格式的文件头

文件格式 文件头(十六进制)

JPEG (jpg) FFD8FF

PNG (png) 89504E47

GIF (gif) 47494638

TIFF (tif) 49492A00

Windows Bitmap (bmp) 424D

CAD (dwg) 41433130

Adobe Photoshop (psd) 38425053

Rich Text Format (rtf) 7B5C727466

XML (xml) 3C3F786D6C

HTML (html) 68746D6C3E

Email [thorough only] (eml) 44656C69766572792D646174653A

Outlook Express (dbx) CFAD12FEC5FD746F

Outlook (pst) 2142444E

MS Word/Excel (xls.or.doc) D0CF11E0

MS Access (mdb) 5374616E64617264204A

时间: 2024-10-12 12:21:05

Python判断上传文件类型的相关文章

JS判断上传文件类型

/*   * 判断图片类型   */    function checkImgType(ths){        if (ths.value == "") {            alert("请上传图片");            return false;        } else {            if (!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(ths.value)) {                a

ASP.net 判断上传文件类型的三种方法

一. 安全性比较低,把文本文件1.txt改成1.jpg照样可以上传,但其实现方法容易理解,实现也简单,所以网上很多还是采取这种方法. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 Boolean fileOk = false;           string path = Server.MapPath("~/images

判断上传文件类型,上传图片

//加载图片检查        function loadImage(img) {            var filePath = img.value;            var fileExt = filePath.substring(filePath.lastIndexOf("."))                .toLowerCase();            if (!checkFileExt(fileExt)) {                parent.l

CI支持各种文件上传-文件类型(Linux + window)

$mimes = array( 'hqx' => 'application/mac-binhex40', 'cpt' => 'application/mac-compactpro', 'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv'

安装wps导致 application/kset 上传文件类型报错解决办法

电脑中安装wps上传execl时,上传.xls文件时 报错 application/kset 文件类型不正确 打印array() print_r($_FILES ) 结果如下: Array ( [userfile] => Array ( [name] => Template.xls[type] => application/kset[tmp_name] => C:\\Windows\\temp\\phpACC.tmp [error] => 0 [size] => 768

Struts2 使用拦截器限制上传文件类型

<action name="upload" class="fileUploadAction" method="upload"> <interceptor-ref name="defaultStack"> <param name="fileUpload.allowedTypes">image/png</param> </interceptor-ref>

input type=&#39;file&#39;限制上传文件类型

前端与后台数据进行对接时,就避免不了要使用ajax进行http请求,常用的请求就两个post与get:然而常见的post请求的需求是文件上传,可能我一说到文件上传大家都觉得so  easy啊,没什么嘛,就是几行 js 代码就能搞定的事.是的,简单的文件上传是可以直接使用FormData()对象将文件上传:如果问题只是这么简单就好了,可能大家也都遇到过上传文件类型的限制,不知道大家有没有注意到这么简单的方法将文件类型过滤,下面直接贴代码: 1. js实现:js实现上传文件类型的限制是将允许上传的文

python +selenium上传文件

python +selenium上传文件 分为2部分 1.是input标签 driver.find_element_by_name("upload").send_keys('C:\\test.txt') 2.非input标签 https://blog.csdn.net/weixin_42024694/article/details/80080629 原文地址:https://www.cnblogs.com/ljf520hj/p/12181098.html

判断上传文件是否是图片文件

方法一:用image对象判断是否为图片 /// <summary> /// 判断文件是否为图片 /// </summary> /// <param name="path">文件的完整路径</param> /// <returns>返回结果</returns> public Boolean IsImage(string path) { try { System.Drawing.Image img = System.D