我创建了一个lambda函数,在将文件上传到S3存储桶时会触发该函数。我想使用mime类型检查检查lambda函数中上传文件的类型。我知道我们可以使用contentType,但它只会检查文件扩展名,如果上传的文件扩展名错误,则无法识别确切的文件类型。反正有没有检查lambda函数中上传文件的mime类型?如果有,请提供示例代码或任何参考。
谢谢,
答案 0 :(得分:0)
在Python的情况下,有2个库,可以检测文件的MimeType:
Python代码示例
import mimetypes # Included in AWS Lambda
import magic # Not included in AWS Lambda, needs to be a part of Lambda package
fileName = # File name, as a string
fileContent = # Content of the file, binary
mime = magic.Magic(mime=True)
contentType = mimetypes.guess_type(fileName)[0]
if contentType is None:
contentType = mime.from_buffer(fileContent)
上面的代码将首先尝试通过扩展来检测mime类型,然后,如果失败,则按文件内容检测。
示例Lambda函数,执行我的类型检测:https://github.com/maxmode/static_website_autosync_terraform/blob/master/lambda/unzip.py#L31