Я знаю, что могу принимать загрузки изображений, используя форму, которая отправляет сообщения в 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