【问题标题】:Ruby On Rails: upload a file to a specific folderRuby On Rails:将文件上传到特定文件夹
【发布时间】:2012-11-18 06:22:15
【问题描述】:

我正在使用这个file uploader example for Ruby on Rail

现在文件按 ID 保存到:public->system->uploads->uploads->000->000.

我需要将它保存到这样的文件夹系统中:public->system->Files->Types(JPG OR PDF) 文件的保存不是根据它们的ID,而是根据它们的类型。

例子:

所有 jpg 文件应保存到: public->system->Files->JPG

所有 PDF 文件应保存到: public->system->Files->PDF

我已经创建了文件夹,我只需要指定一个保存文件的路径。

这是来自uploads_controller.rb的代码

 def create
    p_attr=params[:upload]
    p_attr[:upload] = params[:upload][:upload].first if params[:upload][:upload].class == Array
    @upload = Upload.new(p_attr)

    respond_to do |format|
      if @upload.save
        format.html {
          render :json => [@upload.to_jq_upload].to_json,
          :content_type => 'text/html',
          :layout => false
        }

        format.json { render json: [@upload.to_jq_upload].to_json, status: :created, location: @upload }
      else
        format.html { render action: "new" }


        format.json{ render json: {name:(@upload.upload_file_name).split(".").first ,error: @upload.errors.messages[:upload_file_name]}, :status =>422}

      end
    end
  end

提前致谢

【问题讨论】:

    标签: ruby-on-rails file-upload


    【解决方案1】:

    我建议切换到carrierwave uploader。有一些配置选项,它们将帮助您按类型分隔文件。我的意思是,在载波上传器的这种配置中:

    def store_dir
      "uploads/#{Rails.env}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"    
    end
    

    您可以使用方法更改“model.id”部分,按类型命名图像。

    【讨论】:

    • 我不想切换。如果有可能用回形针做,我想知道。
    • 很遗憾,我没有使用回形针的经验。
    【解决方案2】:

    您可以使用正则表达式手动执行此操作。所以它会是这样的:

    type = p_attr.filename.match(/^*\w{3,}$/).to_s
    

    文件名是它在 p_attr 中的任何名称。因此,这将为您提供以字符串结尾的文件类型。根据回形针 gem,您可以通过将它们设置为参数来设置不同的路径和 url:

    path = "#{Rails.env}/public/system/FILE/#{type}"
    @upload = Upload.new(p.attrs, path: path, url: path)  
    

    在上传行上不是 100% 确定,但类似的东西应该能够覆盖回形针默认值。

    有关更多信息,请查看有关存储的paperclip readme 部分。它解释了覆盖默认路径。

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2011-10-20
      • 2010-11-25
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 2018-10-23
      相关资源
      最近更新 更多