将 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()