将 Android 设备中的照片上传到 Django 后端并将其保存到数据库
Upload photo from Android device to Django backend and save it to database
我必须将图像从 Android 设备上传到用 Python 和 Django 编写的网络应用程序。为了存储图像,我使用了 easy thumbnails。
到目前为止,我所做的是将图像转换为 base64 字符串,然后 post 将其发送到服务器。好吧,这工作得很好,如果我将 base64 字符串写入 png 图像文件,它也会顺利进行。
现在,据我所知,我想将其保存到数据库中,easy thumbnails 将实际文件保存到应用程序文件结构中服务器上的某个位置,并将 link 保存到数据库中的相同位置.
我不明白,如何将我在 POST 中收到的 base64 字符串保存到我的数据库中。
我的模型:
class Register(models.Model):
image = ThumbnailerImageField(upload_to=filename, blank=True, null=True, max_length=2048)
def filename(inst, fname):
f = sha256(fname + str(datetime.now())).hexdigest()
return '/'.join([inst.__class__.__name__, f])
图像未存储在数据库中。它存储到磁盘。只有对该文件的引用存储在数据库中。
def Article(models.model):
image = models.ImageField(...)
你在某处创建了一个新对象:
from django.core.files.base import ContentFile
obj = Article()
data = base64.b64decode(encoded)
# You might want to sanitise `data` here...
# Maybe check if PIL can read the `data`?
obj.image.save('some_file_name.ext', ContentFile(data))
obj.save()
我必须将图像从 Android 设备上传到用 Python 和 Django 编写的网络应用程序。为了存储图像,我使用了 easy thumbnails。
到目前为止,我所做的是将图像转换为 base64 字符串,然后 post 将其发送到服务器。好吧,这工作得很好,如果我将 base64 字符串写入 png 图像文件,它也会顺利进行。
现在,据我所知,我想将其保存到数据库中,easy thumbnails 将实际文件保存到应用程序文件结构中服务器上的某个位置,并将 link 保存到数据库中的相同位置.
我不明白,如何将我在 POST 中收到的 base64 字符串保存到我的数据库中。
我的模型:
class Register(models.Model):
image = ThumbnailerImageField(upload_to=filename, blank=True, null=True, max_length=2048)
def filename(inst, fname):
f = sha256(fname + str(datetime.now())).hexdigest()
return '/'.join([inst.__class__.__name__, f])
图像未存储在数据库中。它存储到磁盘。只有对该文件的引用存储在数据库中。
def Article(models.model):
image = models.ImageField(...)
你在某处创建了一个新对象:
from django.core.files.base import ContentFile
obj = Article()
data = base64.b64decode(encoded)
# You might want to sanitise `data` here...
# Maybe check if PIL can read the `data`?
obj.image.save('some_file_name.ext', ContentFile(data))
obj.save()