我正在尝试使用 chunks 方法保存图像来处理用户尝试上传大图像的情况:
destination = open(incident.Image.path, 'wb+')
for chunk in request.FILES['image'].chunks():
destination.write(chunk)
destination.close()
我的问题是如果不先在 Image 字段中保存一些内容,我就无法获取文件路径,如下所示:
fileName = str(int(time.time() * 1000))
imageName = fileName + '.jpg'
incident.Image.save(imageName, request.FILES['image'])
我的问题是如何在不先保存图像的情况下获得与 event.Image.path 等效的内容?我不想对路径进行硬编码,而我被卡住的原因是因为如果不获取 ImageField 声明的 upload_to 部分,我就无法获得完整的文件路径
编辑:
好的,我已经走得更远了,但我又被卡住了:
imgBuffer = StringIO.StringIO()
for chunk in request.FILES['image'].chunks():
imgBuffer.write(chunk)
# rotate it
rotate = request.POST['rotation']
im = Image.open(imgBuffer)
im = im.rotate(float(rotate))
incident.Image.save(imageName, ContentFile(imgBuffer))
我收到 IOError 无法识别在 im = Image.open(imgBuffer) 处抛出的图像文件,有什么想法吗?