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
分享到:
相关推荐
Ruby-CarrierWave 是一个流行的文件上传库,专为Ruby Web框架如Rails和Sinatra设计,旨在提供一种更优雅、更灵活的方式来处理文件上传。它弥补了Ruby标准库在处理文件上传时的不足,提供了丰富的功能和易于定制的...
login_form = page.form_with(action: '/login') login_form.field_with(name: 'username').value = 'my_username' login_form.field_with(name: 'password').value = 'my_password' agent.submit(login_form) ``` ...
Patron支持multipart/form-data类型的POST请求,可以用来上传文件: ```ruby file = File.open('path/to/file') session.multipart_post("/upload", { file: file }) ``` 8. **HTTP认证**: 支持多种认证机制...
在Ruby on Rails(Rails)框架中,为文件上传添加进度条功能可以显著提升用户体验,让用户在上传大文件时能够清楚地看到进度,增加交互性。本文将深入探讨如何在Rails应用中实现这一功能。 首先,我们需要理解文件...
在iOS开发中,图片上传是一项常见的任务,尤其是在社交媒体应用或者任何需要用户分享个人内容的应用中。本篇将详细讲解如何使用著名的网络库AFNetworking实现单张图片的上传操作。 AFNetworking是Objective-C编写的...
如果熟悉 Ruby on Rails 或其它MVC技术可能会发现它是一个带有声明式语法的MVC实时form。换句话说,你可以把KO当成通过编辑JSON数据来制作UI用户界面的一种方式… 不管它为你做什么 Developers familiar with Ruby ...
**jQuery formBuilder插件详解** jQuery formBuilder是一个强大的前端开发工具,专为简化表单构建过程而设计。它允许开发者和非技术用户通过直观的拖放界面创建自定义的表单,无需深入HTML、CSS或JavaScript代码。...
- **文件预览**: 在上传前,可以通过File API读取文件内容生成预览图,对图片、文本等格式的文件进行预览,确保用户上传的文件符合预期。 - **文件大小限制**: 为防止过大文件导致服务器压力,前端通常会限制...
Rails 6.0.3.5是这个项目的特定版本,该版本引入了多项新功能,如Action Cable支持实时通信、Active Storage简化文件上传处理,以及并行测试以加速测试套件的运行。在“eventz_on_rails”项目中,你可以学习如何利用...
"图像上传器API"是一个基于JavaScript技术实现的接口,它主要设计用于处理用户在Web应用中上传图片的交互。在现代Web开发中,图像上传功能是必不可少的,无论是社交媒体、电商平台还是个人博客,用户常常需要上传...
首先,要实现文件的上传,我们通常使用的是表单上传(multipart/form-data),在Laravel中,我们可以通过表单来发送文件数据。Laravel提供了一个方便的文件上传机制,允许开发者以非常简洁的语法来处理文件上传。在...
在Web开发中,文件上传功能是不可或缺的一部分,尤其是在用户交互丰富的网站或应用中。JavaScript作为客户端的主要脚本语言,为文件上传提供了便利。本文将介绍5个功能强大且易于使用的JavaScript文件上传插件,帮助...
7. **Multipart支持**:对于需要上传文件的POST请求,Unirest支持multipart/form-data,可以方便地发送二进制数据。 8. **全局配置**:可以通过全局配置来调整Unirest的行为,如设置默认的HTTP头、连接池大小等。 9....
对于文件上传,我们需要设置适当的存储策略,如本地存储、云存储或混合方案,并确保处理好文件大小限制、类型验证和错误处理。 此外,考虑到这是一个挑战或项目,我们还需要编写测试用例来验证数据库操作和文件上传...
当需要上传文件时,POST请求通常使用`multipart/form-data`编码。在Java中,需要使用`HttpServletRequest`的`getPart()`方法,而在Express中,可以使用`multer`库来处理这类请求。 4. **JSON请求体**: 当请求体...
发布这是一个微型网络应用程序,它可以: 接受带有网址的请求以可读性解析页面(不需要API令牌) 从可读性中下载EPUB并上传到Dropbox文件夹(可选) 从Readability下载MOBI并发送到Kindle Personal Document(可选)...
你可以通过自定义`onImageUpload`事件处理图片上传。例如,使用Spring MVC后端进行文件接收和保存: ```javascript $('.summernote').summernote({ onImageUpload: function(files, editor, welEditable) { ...
从描述中我们可以推测,这个项目可能在Linux 16 Mint Cinnamon环境下使用VI编辑器、RVM(Ruby Version Manager)以及相关的开发工具来构建和运行。 HTML5的新功能主要包括: 1. **语义化元素**:HTML5引入了更多...
这个库可以帮助解析multipart/form-data类型的POST请求,这是文件上传常用的格式。 ```javascript const express = require('express'); const multer = require('multer'); const upload = multer({ dest: '...