2012-11-17 3 views
0

이 파일은 file uploader example for Ruby on Rail입니다. 이제 파일에 자신의 아이디로 저장됩니다Ruby On Rails : 특정 폴더에 파일 업로드

: public->system->Files->Types(JPG OR PDF) 파일은 자신의 ID에 있지만, 그 종류에 따라 따라하지 저장할 수 있습니다 public->system->uploads->uploads->000->000.

나는 그것이 폴더 등의 시스템에 저장 될 필요가있다.

예 :

모든 JPG 파일

가에 저장해야합니다 가 이미 폴더를 만든 public->system->Files->PDF

, 내가 지정하기 만하면됩니다 : public->system->Files->JPG

모든 PDF 파일 가에 저장한다 파일을 저장해야하는 경로. 사전

내가 carrierwave uploader로 전환 권하고 싶습니다

답변

0

에서 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 

감사에서 코드가

. 유형별로 파일을 분리하는 데 도움이되는 구성 옵션이 있습니다. 나는 carrierwave 업 로더에이 구성에서, 의미 :

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

당신은 유형에 따라 이미지의 이름을 지정하는 방법으로 'model.id'부분을 변경할 수 있습니다.

+0

전환하고 싶지 않습니다. 클립으로 그것을 할 가능성이 있다면, 나는 그것을 알고 싶다. – Tonja

+0

불행히도 나는 클립 클립에 대한 경험이 없습니다. –

0

정규식을 사용하여 수동으로 수행 할 수 있습니다. 그래서 그것은 다음과 같을 것입니다 :

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

filename은 p_attr 내에서 호출 된 것과 동일합니다. 그러면 파일 유형이 문자열로 끝납니다. 업로드 라인에 있는지

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

100 %,하지만 그런 일이 클립 기본값을 재정의 할 수 있어야한다 : 종이 클립 보석에 따르면 당신은 PARAM으로 설정하여 다른 경로와 URL을 설정할 수 있습니다.

자세한 내용은 paperclip readme 섹션의 저장 영역을 확인하십시오. 기본 경로 재정의에 대해 설명합니다.