gpt4 book ai didi

ruby-on-rails - 从 Rails 上的 base64 编码图像中检索文件名和内容类型

转载 作者:数据小太阳 更新时间:2023-10-29 07:06:51 25 4
gpt4 key购买 nike

我正在尝试检索以 base64 编码格式接收的图像的内容类型和文件名。

这是使用 base64 编码图像执行 POST 请求的代码

require 'net/http'
require "rubygems"
require 'active_support'

url = URI.parse('http://localhost:3000/')
image = ActiveSupport::Base64.encode64(open("public/images/rails.png").to_a.join)
post_params = {'image' => image }
Net::HTTP.post_form(url, post_params)

在 Controller 中,我需要获取此图像的内容类型和文件名。所以首先我要解码它

image = ActiveSupport::Base64.decode64(params[:image])
image_data = StringIO.new(image)

然后我卡住了!

我基本上想用回形针保存这张图片。需要一些认真的帮助!

更新:我无法发送内容类型和文件名的参数。我只是在模仿发送这个的客户端(我无法控制添加额外的参数)

最佳答案

您可以使用各种 ImageMagick 库之一解码原始字节,然后向 ImageMagick 询问格式。例如,使用 RMagick :

require 'rmagick'
bytes = ActiveSupport::Base64.decode64(params[:image])
img = Magick::Image.from_blob(bytes).first
fmt = img.format

这将为您提供 'PNG''JPEG'fmt。 ImageMagick 检查字节中的魔数(Magic Number)和其他识别信息,因此它不需要文件名就可以知道您提供的图像类型。

就文件名而言,除非有人明确告诉您它是什么,否则您就不走运了。文件名无论如何都不重要,你应该永远使用你没有生成的文件名来保存任何东西;用户提供的文件名应该只用于向人们显示名称,如果需要,请创建您自己的文件名(您知道是安全的)。

关于ruby-on-rails - 从 Rails 上的 base64 编码图像中检索文件名和内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6955950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com