2011-02-28 9 views
0

오늘 제가 직접 문제가 있습니다 : 피 그냥 아이디어가 필요해 ... 어떻게 레일에 RESTful filemanager를 쓸 수 있습니까?RESTful 파일 관리자 작성 방법

파일과 관련된 모든 작업을 수행하는 파일 컨트롤러를 사용하고 싶습니다.

  • (파일/디렉토리를 생성) 생성
  • 가 (파일/디렉토리 삭제) 파괴
  • 지수 (디렉토리 목록)
  • : 나는 그것을 할 때 이제 편안한 그냥 몇 가지 기능이 있습니다
  • 쇼 (파일의 쇼 속성)
  • 편집 (파일/디렉토리의 이름을 변경) 지금 내가 복사하는 방법을 잘 모릅니다

/파일을 이동 ... 그리고 내가 사용자가 그 filemanager의 여러 인스턴스를 원할 때, 그가 다른 디렉토리에있을 수 있다는 것을 어떻게 관리하나요? (하나의 세션에서 내 filemanager의 다른 인스턴스를 가지고)

누군가는 나에게 약간의 힌트를 줄 수 있습니까? : P

답변

0

파일을 레일스 라우팅의 리소스로 정의 할 수 있습니다. 그런 다음 RESTful 경로가 있습니다. 파일 또는 데이터베이스 자원이있는 경우에는 레일에 대해 중요하지 않습니다. RESTful 경로는 동일합니다. 고유 한 파일 이름은 "/files/file.pdf"일 수 있습니다.

데이터베이스 액세스를위한 객체 - 관계형 매핑과 같이 파일 시스템에서 작업을 수행하기 위해 추상화를 사용하는 것이 좋습니다. 예를 들어 carrierwave을 생각해 볼 수 있습니다. 파일 업로드를 처리하고 삭제/삭제와 같은 기본 작업을 제공합니다. 또한 저장 용량 (파일, gridfx, amazon s3)을 변경할 수 있습니다.

파일 관리자의 다른 인스턴스를 통해 어떤 의미인지 모르겠습니다. 각 사용자에 대해 파일 관리자를 정의 할 수 있습니다. carrierwave와 예를 들어 사용자 지정 저장 DIRS을 정의 할 수 있습니다 :

# mount uploader in user class 
class User 
    mount_uploader :file, UserUploader 
end 

# define user uploader 
class UserUploader < CarrierWave::Uploader::Base 
    def store_dir 
    # model = user object as the uploader 
    # is mounted in the user class 
    'public/uploads/#{model.id}' 
    end 
end 

을 당신이 아이디어를 얻을 희망!

+0

그래서 리소스로 파일을 사용해야합니까? 또는 파일을 리소스로 사용 하시겠습니까? : P 내가 자원으로 사용할 때 색인을 사용하여 디렉토리의 내용을 가져올 수 있습니다.) – klump

+0

다른 인스턴스를 사용하면 파일을 자원으로 사용하면 파일을 저장해야합니다. 세션 변수의 현재 디렉토리 이것은 하나의 세션에서 관리자의 다른 인스턴스를 갖는 것을 더 어렵게 만들 것입니다 ... 사용자 지정 저장소 dirs 팁을 주셔서 감사합니다;) – klump

+0

"자원으로 파일"을 의미했습니다. [리소스 정의] (http : // routes.rubyonrails.org/routing.html#resource-routing-the-rails-default)을 레일스 라우팅에 추가하십시오. 파일은 기본적으로 하나의 리소스 이상입니다. 다른 인스턴스에 대한 예제를 줄 수 있습니까? FTP 클라이언트와 같은 것을 만들려고하십니까? –