我的django应用程序允许用户将图像上传到他们的帐户。我正在使用jquery文件上传来异步处理。在我的上传视图中,我正在使用PIL进行一些基本的图像操作(调整大小,必要时旋转)。
以下用于上传图片的视图的相关部分:
def group_photo_upload_desktop(request):
if request.method == 'POST':
try:
group_id = request.POST.get('group_id')
uploaded_image = request.FILES.get("image", default=None)
image = Image.open(uploaded_image)
image = autorotate_image(image)
image = resize_image(image)
有时,当PIL尝试打开图像时,我开始看到代码失败。失败的图像始终为.heic格式,到目前为止,仅发生在一个从iPhone上传图像(不确定确切版本)的用户(只有7个用户,因此没有很大的样本集)中。
真正让我感到困惑的是,绝大多数.heic图像对于用户来说还不错,并且通常会在延迟几个小时后成功上传。
下面是对最近错误的追溯。
File "/home/EscapeKit/socialwaiver/core/views_group_detail_desktop.py", line 308, in group_photo_upload_desktop
image = Image.open(uploaded_image)
File "/home/EscapeKit/.virtualenvs/venv/lib/python3.5/site-packages/PIL/Image.py", line 2622, in open
% (filename if filename else fp))
OSError: cannot identify image file <TemporaryUploadedFile: 20190706_154803.heic (application/octet-stream)>
然后请求。文件
<MultiValueDict: {'image': [<TemporaryUploadedFile: 20190706_154803.heic (application/octet-stream)>]}>
我已经将用户发送给我的失败照片发送给我,但是我自己无法复制该错误。同样,该错误很少发生(大多数.heic图像以及来自atat的其他图像都可以正常上传),但通常足以使我和用户感到非常烦恼。
任何帮助将不胜感激。这让我完全难过。