【发布时间】:2021-07-05 15:31:40
【问题描述】:
我正在尝试在使用 django 将图像上传到数据库之前对其进行验证,但无论我做什么似乎都无法获得准确的图像大小
view.py:
def upload_image(request): #used to upload images in document_upload
c = main.objects.get(username = request.session['username'])
unq_id = c.unq_id
if request.method == 'POST':
images = request.FILES.getlist('image')
name = request.POST['name']
for x in images:
img = Image.open(x)
img_file = BytesIO()
img.save(img_file, 'jpeg')
image_file_size = img.tell()
if image_file_size > 150 * 1024:
print(image_file_size)
failure = "image needs to be lesser dimenstion than 150kb"
return render(request, 'Main/document_upload.html', {'failure':failure})
else:
print(image_file_size)
fs = FileSystemStorage()
filename = fs.save(x.name, x)
Doc1 = Doc(user_id = unq_id, upload = x, name = name)
Doc1.save()
success = "You have successfully added documents, proceed to 'My documents' to see your documents"
return render(request, 'Main/document_upload.html', {'success':success})
在打印 print(image_file_size) 时,我的值似乎比其属性中显示的大小要小得多
示例print(image_file_size) 显示1295,而实际上大小为8537
我该如何解决这个问题?谢谢
【问题讨论】:
-
在调用
.tell()之前尝试使用.seek(0, 2)。