我正在构建一个 Rails Web 应用程序,用户可以在其中将图像从浏览器上传到云端。我想得有点超前,并希望防止用户使用正在传递的参数,以免在可能的页面(空图像)中出现不良输出。
在我看来,我有 cloudinary 上传器的代码:
<%= form_tag(some_path, :method => :post) do %>
<%= cl_image_upload_tag(:image_id) %>
...
<% end %>
现在,当用户上传图像时,它直接进入 cloudinary,并且该过程返回:image_id。当用户接受图像时,我会在控制器中收到它,如下所示:
if params[:image_id].present?
preloaded = Cloudinary::PreloadedFile.new(params[:image_id])
raise "Invalid upload signature" if !preloaded.valid?
@model.image_id = preloaded.identifier
end
该图像 ID 保存在我的数据库中以供将来检索。
现在,如果用户使用诸如“curl”之类的工具,或者任何其他允许他在将返回的 :image_id 提交给控制器之前修改它的方法怎么办?当我尝试在我的页面中显示它时,我的数据库中将有一个很难找到的错误值和一个空图像。避免这种情况的最佳方法是什么?
问候,