我们在ruby on rails上有一个Web应用程序。现在我们正在开发API和Android和iPhone的应用程序。我们正在使用钛手机应用程序。在上传文件的Web应用程序中,我们使用载波。我按照railscast中显示的相同过程使用carrierwave上传文件。我的问题是如何在移动应用程序中执行此操作。如果可能的话,我需要想法和示例代码。以下是我的代码,适用于该应用程序的Web版本。
控制器操作
def create_file
@community_message_file = Community::MessageFile.new(params[:community_message_file])
respond_to do |format|
if @community_message_file.save
format.js {}
else
flash.now[:error] = @community_message_file.errors.size > 0 ? ErrorUtility.validation_errors(@community_message_file.errors) :
"Saving failed"
format.js {}
end
end
end
一些方法模型
mount_uploader :file_path, MessageFileUploader
validates :file_path, file_size: {maximum: 1.megabytes.to_i}
def extension
return extract_extension
end
def file_name
return File.basename(self.file_path.to_s)
end
def image?
file_extension = extract_extension
return true if (file_extension == 'jpeg' || file_extension == 'jpg' || file_extension == 'png' || file_extension == 'gif')
return false
end
private
def extract_extension
return File.extname(self.file_path.to_s).split('.').last
end
我的上传者模型
include CarrierWave::MiniMagick
after :remove, :clear_uploader
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
def clear_uploader
@file = @filename = @original_filename = @cache_id = @version = @storage = nil
model.send(:write_attribute, mounted_as, nil)
end
def extension_white_list
%w(jpg jpeg gif png doc docx xls xlsx pdf zip)
end
def image?(new_file)
%w(jpg jpeg gif png).include?(new_file.extension.to_s)
end
答案 0 :(得分:0)
刚刚使用ios模拟器进行了测试。使用文件字段,移动safari会提示照片应用选择照片。从那里开始,如何在后端实现它是无关紧要的。浏览器请求的工作方式与桌面操作相同。