【发布时间】:2016-07-25 10:31:43
【问题描述】:
我正在尝试使用carrierwave,它可以正常上传文件,但我希望我的mp4 文件位于public/uploads 目录中。它将它添加到那里,但将其放入 tmp/some-weird-id 文件夹中。我只想要公共/上传中的 mp4 文件。这可能吗?如果是这样,怎么做?我已经尝试编辑 cache_dir,但它仍然添加了那个奇怪的 id 文件夹。
这是目前为止的代码:
class VideoUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
# include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
def store_dir
"uploads" # This saves to Rails_Root/public/uploads
end
def move_to_cache
true
end
def move_to_store
true
end
这是控制器
def create
@file = params["video"][:file].original_filename
@video = Video.new({ :upload_file_name => @file, :user_id => current_user.id})
@video.file = params["video"][:file]
respond_to do |format|
if @video.save!
format.json { render json: {files: [@video.id]}, status: :created }
end
end
end
【问题讨论】:
-
您的
create方法看起来不正确。要么直接使用上传器uploader.store!(my_file),要么将其安装到模型u.avatar = params[:file]。您不必直接使用文件名。见github.com/carrierwaveuploader/carrierwave#getting-started