当前位置: 首页 > 面试题库 >

服务存储在SQLAlchemy LargeBinary列中的图像

裴威
2023-03-14
问题内容

我想上传一个文件并将其存储在数据库中。我创建了一个LargeBinary列。

logo = db.Column(db.LargeBinary)

我读取了上传的文件并将其存储在数据库中。

files = request.files.getlist('file')

if files:
    event.logo = files[0].file.read()

这是将图像作为二进制文件存储在数据库中的正确方法吗?如何将二进制数据再次转换为图像以显示它?


问题答案:

如果您绝对需要将映像存储在数据库中,那么可以,这是正确的。通常,文件存储在文件系统中,路径存储在数据库中。这是更好的解决方案,因为与动态发送大量数据的应用程序不同,Web服务器通常具有一种从文件系统提供文件的高效方法。

要提供图像,请编写一个获取图像数据并将其作为响应发送的视图。

@app.route('/event/<int:id>/logo')
def event_logo(id):
    event = Event.query.get_or_404(id)
    return app.response_class(event.logo, mimetype='application/octet-stream')
    ```


最好使用正确的模仿类型而不是`application/octet-stream`。

您也可以使用数据uri将图像数据直接嵌入html中。这不是最理想的,因为每次页面渲染时都会发送数据uri,而客户端可以缓存图像文件。

from base64 import b64encode

@app.route(‘/event/ /logo’)
def event_logo(id):
event = Event.query.get_or_404(id)
image = b64encode(event.logo)
return render_template(‘event.html’, event=event, logo=image)



{{ obj.x }}
{{ obj.y }}


```



 类似资料:
  • 我正在尝试让Firebase存储与Imgix或cloudinary这样的图像服务一起工作。然而,Firebase提供的下载URL似乎不能与这些服务一起工作。 例如:Cloudinary说您可以获取如下所示的图像: http://res.cloudinary.com/demo/image/fetch/http://upload.wikimedia.org/wikipedia/commons/0/0C

  • 我有一个laravel应用程序,我在localhost中上传图像,它正在工作,我使用存储目录的链接 本地服务器 使用我自己的控制器上载1个图像时,该图像将存储在storage/app/public/posts/file1中。jpg,同时图像将存储在root/public/storage/posts/file1中。jpg= 但是在一个在线服务器共享主机中,当我上传图像时,它不工作 图像将存储在sto

  • 我找到了一些相关的答案,但没有一个能解释我是否真的需要Azure Media Services团队示例中的所有代码https://azure.microsoft.com/en-us/documentation/articles/media-services-copying-existing-blob/我只想把一个文件从blob上传到Azure Media Services。这样地: 但是我得到了

  • 我正在用Symfony制作简单的应用程序。我在这里配置了服务 我的服务使用存储库(例如,评论服务使用评论存储库),这里是的构造函数 性质 构造函数: 当我试图运行我的应用程序我得到这个错误 PHP致命错误:未捕获Symfony\Component\DependencyInjection\Exception\AutowiringFailedException:无法自动连线服务“AppBundle\R

  • 问题内容: 已关闭 。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗? 添加详细信息并通过编辑此帖子来澄清问题。 6年前关闭。 请给我查询在MySQL数据库中插入图像的查询。我是stackoverflow的新手,所以如果我的问题不符合要求,请忽略我。 问题答案: 有特定的原因为什么您不能存储对图像的引用,而不是实际图像? 图像很大,它们使数据库很大。SQL可能很痛苦(因为它不是面向对

  • 问题内容: 我正在从servlet提供图像。响应内容类型为image / jpeg。我发现从我的servlet请求的图像没有被缓存。如何使它们像文件图像请求通常那样被缓存?我尝试设置Cache- Control:public,但无济于事。 问题答案: 好的..看起来默认头字段应该启用缓存。我在另一个论坛上找到了解决方案。显然,您需要在响应中显式设置content- length。不知道为什么。我认