1.所用到的插件
#cdn
gem 'carrierwave'
gem 'rest-client'
gem 'carrierwave-upyun'
2.在config/initializers文件夹下添加carrierwave.rb文件,内容:
CarrierWave.configure do |config|
config.storage = :upyun
config.upyun_username = "账户名"
config.upyun_password = "密码"
config.upyun_bucket = "空间名"
config.upyun_bucket_domain = "空间访问地址"
end
3.新写model: upload.rb
#encoding: utf-8
class Upload
BUCKET = "空间名"
attr_accessor :save_key, :allow_exts, :content_length_range, :return_url, :notify_url, :unsharp, :quality, :password
def initialize( opt )
self.save_key = [opt[:prefix], Time.now.strftime("%y%m%d%I%M%S") +'size'+rand(10000).to_s+ "{.suffix}"].join("/") #文件存放的地址
self.allow_exts = opt[:allow_exts]||"jpg,jpeg,gif,png" #文件类型
self.content_length_range = "0,#{200.kilobyte.to_i}" #大小
self.return_url = opt[:return_url] #回调地址
self.notify_url = opt[:notify_url] #回调地址
self.unsharp = opt[:unsharp]||false
self.quality = (opt[:quality] || 95 ).to_i
end
def expiration
Time.now.to_i + 600
end
def password
"nBD/sdfssdEkDc=" #form_api又拍云外获取的验证密钥
end
def policy
Base64.strict_encode64( policy_json )
end
def policy_json
policies = {
"bucket" => BUCKET,
"expiration" => self.expiration,
"save-key" => self.save_key,
"return-url" => self.return_url
}
policies.to_json
end
def signature
Digest::MD5.hexdigest("#{self.policy}&#{self.password}")
end
end
4.上面的form_api(从又拍云处获取到的验证密匙):
5.help层添加一个方法:
#上传图片所有参数
def upyun_form_input_tag(opts = {})
upload=Upload.new( opts )
return [ tag(:input, :type => :hidden, :name => "policy", :value => upload.policy),
tag(:input, :type => :hidden, :name => "signature",:value => upload.signature)].join("\n").html_safe
end
6.html文件中写法:
<%=form_tag "http://v0.api.upyun.com/空间名/", :method=>:post, :multipart =>true do%>
<%=upyun_form_input_tag( {:prefix=>"/zy_fenxiangs", :notify_url=>upload_picture_index_url} )%>
<input type="file" class="btn_up_f" name="file" />
<%=submit_tag "提交"%>
<%end%>
7.controller层:
def upload
params[:code] #HTTP状态码
params[:message] #返回代码
params[:url] #图片地址
end
- 大小: 1.5 KB
分享到:
相关推荐
英雄之旅API Ruby on Rails 6课程作为创建Heroes CRUD的API。 该存储库是YouTube 的。 Ruby版本2.7.2 Rails版本6.1.x 数据库SQLite3(dev)/ PostgreSQL(产品)运行项目的初始设置# clone the projectgit clone ...
Beginning_Ruby_From_Novice_to_Professional.pdf
ruby_on_rails_3_入门教程(中文)
ruby_1_9_3_stdlib这一份是ruby的标准库,相当于类库
SignalFx的Ruby客户端库_Ruby_Shell_下载.zip
ruby_1_9_3_core_rdocs.gz Ruby开发文档
ruby_1_8_6_core_rdocs.tgz 包含ruby的标准库文件 类和方法
ruby_1_9_3_stdlib_rdocs.gz ,Ruby最新开发文档
zendesk_api_client_rb, 官方 ruby Zendesk API客户端 Zendesk API客户端 API版本支持这里客户端仅 支持 zendesk API的v2. 请查看我们的API文档了解更多信息。文档请在报告 Bug 或者请求帮助之前,查看 wiki,类文档...
Ruby缺少的后台和批处理系统_Ruby_下载.zip
Ruby的数据处理和ETL框架_Ruby_下载.zip
SIMPLE RAILS 5 REST API 执行CRUD功能的基本REST API的示例。 默认情况下使用MySQL。 请添加您自己的数据库和凭据安装依赖$ bundle install运行迁移$ rails db:migrate运行服务器$ rails s
dropbox_api, Dropbox的ruby 客户端库 DropboxApi与 Dropbox API通信的库。安装将此行添加到你的应用程序的Gemfile中:gem 'dropbox_api'然后执行: $ bundle 或者将它的自己安装为:
Ruby API 帮助文档Ruby API 帮助文档Ruby API 帮助文档Ruby API 帮助文档Ruby API 帮助文档Ruby API 帮助文档Ruby API 帮助文档Ruby API 帮助文档Ruby API 帮助文档
Ruby 的通用遗传算法是一种非常简单易用的 Ruby 遗传算法: 拿一个类来进化它并定义适应度、重组和变异方法。 使用种群创建一个 GeneticAlgorithm 对象。 根据需要多次调用进化方法,并查看最佳进化。
Sketch Up_Ruby_API by Sugar
DanielShiffman的“学习处理”中的示例,全部在Ruby-Processing中完成_Ruby_下载.zip
batch_request_api, 在 Rails 应用程序上,提供批处理操作的ruby 中间件 batch_request_api 用于实现批量创建。更新和删除的Rails 中间件 gem 。可以定制的中间件批量创建。更新和删除记录或者并行删除记录安装将...
用法初始化客户端typeform_api_key = ENV [ 'TYPEFORM_API_KEY' ]client = Typeform :: Client . new ( typeform_api_key )获取API信息如果要确保身份验证和与Typeform I / O的连接正常,请调用Typeform::Client#...