【问题标题】:Upload photo from Android device to Django backend and save it to database将照片从 Android 设备上传到 Django 后端并将其保存到数据库
【发布时间】:2015-06-19 13:52:51
【问题描述】:

我必须将图像从 Android 设备上传到用 Python 和 Django 编写的网络应用程序。为了存储图像,我使用了简单的缩略图

到目前为止,我所做的是将图像转换为 base64 字符串并将其发布到服务器。好吧,这工作得很好,如果我将 base64 字符串写入 png 图像文件,它也会顺利进行。

现在,据我所知,我想将其保存到数据库中,简单的缩略图将实际文件保存到应用程序文件结构中服务器上的某个位置,并将链接保存到数据库中。

我不明白,如何将我在 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])

【问题讨论】:

    标签: android python django easy-thumbnails


    【解决方案1】:

    图像未存储在数据库中。它存储在磁盘上。数据库中仅存储对该文件的引用。

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

    【讨论】:

    • 我知道文件存储在文件系统上,只有一个链接存储在数据库中。您的解决方案完美无缺。使用表单将其作为 Web 应用程序的一部分进行操作很简单。作为一个Android的东西,我不明白该怎么做。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2015-06-19
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多