在我的应用程序中,我已经有上传图片的回形针,但需要更改以接受图像和视频.图像已经在具有belongs_to关系的模型中定义,称为Attachment.由于视频也将是相同父模型的附件(在我的案例中,文章),我想Attachment为图像和视频重用相同的模型.这是一个好主意吗?
我的代码 attachment.rb是:
class Attachment < ActiveRecord::Base
belongs_to :article
has_attached_file :url, :s3_protocol => :https ,
styles: {
medium: "300x300>", thumb: "100x100>", big: "1200x1200>", normal: "600x600>"
}
validates_attachment_content_type :url, content_type: /\Aimage|\Avideo\/.*\Z/
validates_attachment :url, content_type: { content_type: ["image/jpeg", "image/gif", "image/png", "video/mp4"] }
end
Run Code Online (Sandbox Code Playgroud)
但事实并非如此,它并没有在S3上存储视频.我在终端上得到以下内容
Command :: file -b --mime '/var/folders/v_/pf2bsxnj1y37ccd2pjksv7z80000gn/T/f3e2afc957bb9fb2aa3e77e69359c48920160131-13311-pyeez1.mp4'
Command :: identify -format '%wx%h,%[exif:orientation]' '/var/folders/v_/pf2bsxnj1y37ccd2pjksv7z80000gn/T/8dc7385648e2164764b72fda6fd9099a20160131-13311-1l40ccn.mp4[0]' 2>/dev/null
[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: Paperclip::Errors::NotIdentifiedByImageMagickError>
Command :: identify -format '%wx%h,%[exif:orientation]' '/var/folders/v_/pf2bsxnj1y37ccd2pjksv7z80000gn/T/8dc7385648e2164764b72fda6fd9099a20160131-13311-1l40ccn.mp4[0]' 2>/dev/null
[paperclip] An …Run Code Online (Sandbox Code Playgroud) 如果这已经得到回答并且我找不到它,请道歉.任何方向将不胜感激.
使用Rails 4.1.4,Paperclip 4.2.0和Simple Form 3.0.2.
之后Submit,我has an extension that does not match its contents在表单错误消息中得到输出.
在服务器窗口中:
Started POST "/routes" for 127.0.0.1 at 2014-08-28 15:18:25 +0700
Processing by RoutesController#create as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"5BCHGBkwQH4mlnTVjy/PpD53mJKJpSmBXwXT/oul7yY=", "route"=>{"track_attributes"=>{"gpx"=>#<ActionDispatch::Http::UploadedFile:0x007fa89c9cd348 @tempfile=#<Tempfile:/var/folders/_g/6shs5yrj36n960wpt880ysl80000gn/T/RackMultipart20140828-42106-vi71nb>, @original_filename="Serge's tracks.gpx", @content_type="application/octet-stream", @headers="Content-Disposition: form-data; name=\"route[track_attributes][gpx]\"; filename=\"Serge's tracks.gpx\"\r\nContent-Type: application/octet-stream\r\n">}, "title"=>"Serge track", "description"=>"loop of hang dong", "distance"=>"", "total_ascent"=>""}, "commit"=>"Create Route"}
Command :: file -b --mime '/var/folders/_g/6shs5yrj36n960wpt880ysl80000gn/T/f55fe48e09c9cc3ee6c6271fe94f407520140828-42106-1hgpby7.gpx'
[paperclip] Content Type Spoof: Filename Serge's_tracks.gpx ([]), content type discovered from file command: application/xml. See documentation …Run Code Online (Sandbox Code Playgroud) 检查是否存在回形针附件:我正在尝试查看附件是否选择了一个文件/图像,然后会出现类似这个新视图的情况。所以在我点击浏览后,选择一个我想要发生的事情!!谢谢!
当我执行此代码时没有任何反应!
家庭视图:
<% if @post.image.present? %>
<%= render 'posts' %>
<% end %>
Run Code Online (Sandbox Code Playgroud) html if-statement ruby-on-rails paperclip paperclip-validation
所以我有这个Dockerfile尝试以下列方式安装ImageMagick:
FROM ruby:2.4-alpine
...
RUN apk --update add imagemagick
...
Run Code Online (Sandbox Code Playgroud)
关键是容器无法识别file实用程序(用于内容类型检测).
本地环境(Mac OSX上,安装imagemagick有brew):
> file --version
file-5.25
magic file from /usr/share/file/magic
> convert --version
Version: ImageMagick 6.9.9-5 Q16 x86_64 2017-08-03
http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules
Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png tiff xml zlib
Run Code Online (Sandbox Code Playgroud)
Docker Alpine容器(使用shell访问docker exec -it CONTAINER_ID):
> file --version
sh: file: not found
> convert --version
Version: ImageMagick …Run Code Online (Sandbox Code Playgroud) imagemagick paperclip paperclip-validation docker alpine-linux
在Google Cloud上部署应用程序时出现问题
所含内容与所报告的内容不符
在本地工作正常!我已经尝试使用command_path。所以我真的不知道下一步该怎么做...
这是我的模特
has_mongoid_attached_file :image,
:styles => { :large => "380x380!" , :medium => "240x240", :small => "120x120!" },
:storage => :fog,
:fog_public => true,
:fog_directory => 'XXXX',
:path => "images/:id/:style/:basename.:extension",
:fog_credentials => { :provider => 'Google',
:google_storage_access_key_id => 'XXXXX',
:google_storage_secret_access_key => 'XXXXX'}
validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]
Run Code Online (Sandbox Code Playgroud)
感谢你付出的努力。我希望你们能帮助我
ruby google-app-engine ruby-on-rails paperclip paperclip-validation
paperclip ×5
alpine-linux ×1
angularjs ×1
docker ×1
html ×1
if-statement ×1
imagemagick ×1
ruby ×1