gpt4 book ai didi

ruby-on-rails - S3 上的 Paperclip 正在从 url 更改文件扩展名

转载 作者:行者123 更新时间:2023-12-04 05:56:37 25 4
gpt4 key购买 nike

我写了一个 rake 任务,从维基百科下载一个给定名人名字的图像,但由于某种原因,当存储在 S3 上时,文件扩展名要么被删除,要么更改为 .txt

否则文件是正确的。

有任何想法吗?

从我的名人模型:

has_attached_file :pic, 
:styles => { :medium => "300x300>", :thumb => "100x100>" },
:default_style => :medium,
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => "/:style/:img_name.:extension"

从我的 rake 任务:
desc "Update celeb pics from wiki"
task :update_celeb_pics => [:environment] do
include ApplicationHelper
Celeb.all.each do |celeb|
if !celeb.name.start_with?("(")
puts celeb.name
celeb.pic = open(getImage(celeb.name))
celeb.save
end
end
end

getImage 方法是一个返回字符串的助手
    require 'open-uri'
require 'uri'

module ApplicationHelper
def getInfo(name)
Nokogiri::XML(open(URI.escape("http://en.wikipedia.org/w/api.php?action=opensearch&search=#{name}&limit=1&namespace=0&format=xml")))
end

def nokoPage(name)
Nokogiri::XML(open(getURL(name)))
end

def getImage(name)
"http:" + nokoPage(name).css("table img")[0].attribute("src").value if !nokoPage(name).css("table img").empty?
end

def getDescription(name)
getInfo(name).css("Description").text
end

def getURL(name)
getInfo(name).css("Url").text
end

def getBday(name)
bday = nokoPage(name).css("span.bday")
return Date.parse(bday[0].text) if !bday.empty?
return Date.today
end

def getDday(name)
dday = nokoPage(name).css("span.dday")
return Date.parse(dday[0].text) if !dday.empty?
end

end

最佳答案

这是因为

self.pic = open("http://something.com/bla/image.png")

在这里不是最好的解决方案。就在昨天,我将合并请求合并到 Paperclip 中,让您可以执行此操作
self.pic = URI.parse(getImage(name))

这将确保您的图片的内容类型与下载的文件匹配,图片的文件名设置为下载的文件的名称。

您获得 txt 扩展名的原因是因为 open 返回一个 StringIO 对象,该对象实际上将文件名命名为“stringio.txt”。您的文件名可能已被 s3 代码更改,但扩展名仍为“.txt”

我建议你将你的 Gemfile 链接到 paperclip 的 github repo,运行 bundle 并重试。

干杯,
阿迪亚

关于ruby-on-rails - S3 上的 Paperclip 正在从 url 更改文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11588789/

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