新建项目
mkdir UploadTest
rails new .
添加CarrierWave支持
在Gemfile文件中加上
gem 'carrierwave'
执行
bundle install
新建模型,添加CarrierWave属性支持
rails g model user name:string head_pic:string
rails g uploader file_helper
可以看到在 根/app/uploaders下新生成了文件file_helper_uploader.rb,里面有FileHelperUploader类,这就是支持上传的类
在 根/app/models/user.rb里面找到类User,加上
class User < ApplicationRecord
mount_uploader :head_pic, FileHelperUploader
end
mount_uploader :head_pic, FileHelperUploader
end
这样就为User模型的head_pic属性添加了CarrierWave支持
新建Controller测试上传
rails g controller Test test_upload
class TestController < ApplicationController
skip_before_filter :verify_authenticity_token
def test_upload
#在User模型发生save或者create动作的时候,上传动作就会执行
user=User.create(
name:"aaa",
head_pic:request.POST["head_pic"]
)
json_str =""
if user!=nil
json_str = "{'head_pic':'0.0.0.0#{user.head_pic}'}" #返回文件存储路径,即下载路径
else
json_str = "falied"
end
render json: json_str
end
end
运行测试
rails db:migrate RAILS_ENV=development
rails s -b 0.0.0.0 -p 3333