javascript - 将 JavaScript 生成的图像上传到 Django

标签 javascript django image forms

我有一个在客户端生成的图像,我想通过表单将其传输到服务器。例如,假设我有一个注册表单,其中的个人资料图像由 JavaScript 自动生成,我想将该图像传输到 django。

当用户点击提交按钮时,将图像二进制数据传输到服务器的最佳方式是什么?我应该使用什么表单域?

谢谢!

最佳答案

我自己找到了答案,以下是解决方案以备不时之需:

在客户端,这是从 Canvas 获取图像并将其设置为表单字段(隐藏的字符字段)的方式:

var dataURL = document.getElementById('canvas_id').toDataURL("image/png");
document.getElementById('id_hidden_image_field').value = dataURL;

在 django 方面:

  1. 向表单添加一个名为“hidden_​​image_field”的隐藏字段,它将用于传递数据。这个字段是一个简单的 CharField。您可以添加 max_length 限制以确保图像的大小合理(注意:不是尺寸而是实际大小)。

  2. 解析图像数据:

    import re
    import base64
    dataUrlPattern = re.compile('data:image/(png|jpeg);base64,(.*)$')
    ImageData = request.POST.get('hidden_image_field')
    ImageData = dataUrlPattern.match(ImageData).group(2)
    
    # If none or len 0, means illegal image data
    if (ImageData == None or len(ImageData) == 0:
        # PRINT ERROR MESSAGE HERE
        pass
    
    # Decode the 64 bit string into 32 bit
    ImageData = base64.b64decode(ImageData)
    

现在 ImageData 包含二进制数据,您可以简单地保存到一个文件,它应该可以工作。

希望这对您有所帮助。

关于javascript - 将 JavaScript 生成的图像上传到 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173680/

相关文章:

Django - 上传静态图像作为默认 ImageField 文件

html - 在 IE9 中缩小图像质量不佳

python tkinter : displays only a portion of an image

python - 解决 python/django 应用程序中的循环依赖

python - Debug = True 时 Django 错误报告电子邮件

css - 使用 CSS 居中未定义但特定的 <img> 标签?

javascript - 如何将数组值添加在一起直到它们达到特定数字,然后使用添加的值创建对象?

javascript - <ul> 导航栏中的 JS/CSS 下拉菜单

javascript - 检查网站是否使用 phantomjs 重定向到不同的 URL,仅针对特定网站给出错误

javascript - 如何在所有页面启用深色模式?