Я знаю, что я могу принять загрузку изображений, имея форму, публикующие в App Engine, как так:Python App Engine загружен изображение типа содержимого
<form action="/upload_received" enctype="multipart/form-data" method="post">
<div><input type="file" name="img"/></div>
<div><input type="submit" value="Upload Image"></div>
</form>
Затем в коде Python я могу сделать что-то вроде
image = self.request.get("img")
Но как я могу определить, каким должен быть тип содержимого этого изображения, когда позже покажет его пользователю? Кажется, самый надежный способ состоит в том, чтобы понять это из самих данных изображения, но как получить это легко? Я не видел ничего подходящего в пакете изображений google.appengine.api.
Должен ли я просто искать магические заголовки изображений в своем собственном коде или есть какой-то метод для этого где-то?
Edit:
Вот упрощенное решение, которое я закончил с использованием, кажется, работает достаточно хорошо для моих целей и избавляет от необходимости хранить тип изображения в качестве отдельного поля в хранилище данных:
# Given an image, returns the mime type or None if could not detect.
def detect_mime_from_image_data(self, image):
if image[1:4] == 'PNG': return 'image/png'
if image[0:3] == 'GIF': return 'image/gif'
if image[6:10] == 'JFIF': return 'image/jpeg'
return None
Пожалуйста post link – crizCraig
Это дает мне ошибку «AttributeError: экземпляр UnicodeMultiDict не имеет метода __call__» – zakdances
@yourfriendzak Вы по-прежнему используете parens '()', а не квадратные скобки '[]'. –