gpt4 book ai didi

python - 如何找到该文件是图像或文档或...没有扩展名和内容类型?

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:16 24 4
gpt4 key购买 nike

文件管理器

我想上传任何文件,我有一个文件管理器服务,可以获取文件并在没有扩展名的情况下保存,文件名是 UUID 并返回文件信息。

我的文件管理器处理程序:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import json
from pyramid_storage.exceptions import FileNotAllowed
import uuid
from pyramid.view import view_config
from pyramid.response import Response
import os


class UploadHandler:
def __init__(self, request):
self.request = request
self.settings = self.request.registry.settings

@view_config(route_name='upload', request_method='POST', renderer='json')
def post(self):
# file
f = self.request.POST.items()

# file name
file_name_main = f[0][1].filename

# content type
content_type = str(f[0][1].type)

if content_type:
extension_main = content_type.split('.')[-1]

# set id for file name
if extension_main:
f[0][1].filename = str(uuid.uuid4())
else:
response = Response(body=json.dumps({'ERROR': 'Your File Not Allowed'}))
response.headers.update({
'Access-Control-Allow-Origin': self.settings['Access-Control-Allow-Origin'],
})
return response
else:
response = Response(body=json.dumps({'ERROR': 'Your File Not Allowed'}))
response.headers.update({
'Access-Control-Allow-Origin': self.settings['Access-Control-Allow-Origin'],
})
return response

try:
# save file
file_name = str(self.request.storage.save(f[0][1]))
except FileNotAllowed:
response = Response(body=json.dumps({'ERROR': 'Your File Not Allowed'}))
response.headers.update({
'Access-Control-Allow-Origin': self.settings['Access-Control-Allow-Origin'],
})
return response

# file name == file id
f_name = file_name
file_path = self.request.storage.base_path + os.sep + f_name
file_size = os.path.getsize(file_path)

response = Response(body=json.dumps(
{'file_id': f_name, 'file_name': file_name_main, 'content_type': content_type, 'size': file_size,
'extension': extension_main}))

response.headers.update({
'Access-Control-Allow-Origin': self.settings['Access-Control-Allow-Origin'],
})
return response

最佳答案

有一个名为 file 的 UNIX 实用程序,它使用“魔法”来识别已知文件类型。 file 为此目的使用名为 libmagic 的库。

libmagic 的 python 接口(interface)称为 filemagic,您可以获取它 here .

关于python - 如何找到该文件是图像或文档或...没有扩展名和内容类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39602869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com