将base64转换为.jpg文件,然后保存在Django数据库中
Converting base64 to .jpg file, then saving in Django database
def upload_image(request):
if request.is_ajax and request.POST:
image = request.POST.get('image')
image_name = request.POST.get('image_name')
imgdata = base64.b64decode(image + '==')
extension = image_name.split('.')[1].lower()
image_name = '{}_{}_profile_image.{}'.format(request.user.first_name, request.user.last_name, extension)
with open(image_name, "wb") as image_file:
image_file.write(imgdata)
upload = ProfileImage(
file=image_file,
user = request.user.username
)
upload.save()
data = {
}
return JsonResponse(data)
我正在尝试使用 Croppie.js 在 Django 中裁剪图像。然后将图像上传到 S3 存储桶。
我正在裁剪,它返回裁剪为 base64 字符串的图像。我把它解码并写入一个新的图像文件,这样它就可以保存在数据库中。
当它到达 upload.save() 时出现错误。
AttributeError: '_io.BufferedWriter' object has no attribute '_committed'
我不确定是什么问题。这是我第一次使用 base64 图像,我不确定我在转换回文件时是否遗漏了什么或发生了什么。
我能够通过使用 ContentFile
找到解决方案
from django.core.files.base import ContentFile
def upload_image(request):
if request.is_ajax and request.POST:
image = request.POST.get('image')
image_name = request.POST.get('image_name')
extension = image_name.split('.')[1].lower()
image_name = '{}_{}_profile_image.{}'.format(request.user.first_name, request.user.last_name, extension)
imgStr = image.split(';base64')
data = ContentFile(base64.b64decode(imgStr[1]), name=image_name)
upload = Upload(
file=data,
user = request.user.username
)
# Saves upload to S3 bucket
upload.save()
data = {
}
return JsonResponse(data)
它将 base64 字符串转换为 django 可读的文件。
def upload_image(request):
if request.is_ajax and request.POST:
image = request.POST.get('image')
image_name = request.POST.get('image_name')
imgdata = base64.b64decode(image + '==')
extension = image_name.split('.')[1].lower()
image_name = '{}_{}_profile_image.{}'.format(request.user.first_name, request.user.last_name, extension)
with open(image_name, "wb") as image_file:
image_file.write(imgdata)
upload = ProfileImage(
file=image_file,
user = request.user.username
)
upload.save()
data = {
}
return JsonResponse(data)
我正在尝试使用 Croppie.js 在 Django 中裁剪图像。然后将图像上传到 S3 存储桶。
我正在裁剪,它返回裁剪为 base64 字符串的图像。我把它解码并写入一个新的图像文件,这样它就可以保存在数据库中。
当它到达 upload.save() 时出现错误。
AttributeError: '_io.BufferedWriter' object has no attribute '_committed'
我不确定是什么问题。这是我第一次使用 base64 图像,我不确定我在转换回文件时是否遗漏了什么或发生了什么。
我能够通过使用 ContentFile
from django.core.files.base import ContentFile
def upload_image(request):
if request.is_ajax and request.POST:
image = request.POST.get('image')
image_name = request.POST.get('image_name')
extension = image_name.split('.')[1].lower()
image_name = '{}_{}_profile_image.{}'.format(request.user.first_name, request.user.last_name, extension)
imgStr = image.split(';base64')
data = ContentFile(base64.b64decode(imgStr[1]), name=image_name)
upload = Upload(
file=data,
user = request.user.username
)
# Saves upload to S3 bucket
upload.save()
data = {
}
return JsonResponse(data)
它将 base64 字符串转换为 django 可读的文件。