【问题标题】:Session loses its data with Carrierwave multi files upload using jquery file upload使用 jquery 文件上传的 Carrierwave 多文件上传会话丢失其数据
【发布时间】:2014-06-02 16:38:47
【问题描述】:

我有一个名为 Estate 的模型,其中 has many :images (Image model) 和 我正在使用 CarrierWavejQueryFileUpload 在 Estate New/Edit 表单中处理这些。

在创建新资产并上传图像时,jQueryFileUpload 使用 AJAX 请求执行此操作,因此我将所有上传的图像路径存储在会话数组中,然后在 createupdate 操作中使用此数组进行保存从tmp 目录到实际目录的图像。

这对我来说很好,但问题是当我一次选择多张照片时,会话数组仅存储最后选择的图像,并且除了最后一张之外,并非所有图像都被推送到会话数组。

  def images_url_list
    @image = Image.new(image_params)
    session[:cached_images_paths] << @image.image_file.current_path
  end

我已经调试了这个动作,我发现如果我一次选择 5 个图像,images_url_list 动作会被触发 5 次,所以假设我上传了一个名为“path0”的图像,然后我上传了 5 个路径名为 [”的图像path1","path2","path3","path4","path5"] 并且会话已经有一个名为“path0”的路径,第一次上传第一张图片后会话将是 ["path0", "path1"] , 第二次 ["path0","path2"] 依此类推,直到最后一个图像是 path5。

所以图像路径的最终计数只有 2 个而不是 6 个图像路径。

谁能告诉我到底是什么问题?

【问题讨论】:

    标签: ruby-on-rails session ruby-on-rails-4 carrierwave jquery-file-upload


    【解决方案1】:

    我认为问题在于多请求和会话保存。 在我使用类似环境的情况下,只保存了最后上传的文件。我无法将它添加到 filesUploaded 数组中,所以我想了一个替代解决方案。

    一个好的方法可能是:

    • 生成会话上传哈希并将其存储在上传侦听器上的每个上传文件
    • 多路上传完成后用于识别上传的文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 2011-07-16
      • 2014-01-11
      • 2013-06-30
      • 1970-01-01
      相关资源
      最近更新 更多