2009-08-25 5 views
0

파일 시스템에 저장하기 전에 업로드 된 파일의 비트를 조사해야합니다. PHP의 설명서에는 사용 가능한 속성 (http://us3.php.net/manual/en/features.file-upload.post-method.php)이 무엇인지 정확하게 알려주는 멋진 페이지가 있지만 Ruby 및/또는 Rails와 비슷한 것을 찾을 수 없습니다.RoR : 업로드 된 파일 검사

또한 업로드의 JSON 형식 문자열 로깅을 시도했지만 중복 된 UTF-8 오류가 발생합니다. 나는 다른 것을 시도 할 생각이 없다.

누구나 통찰력을 제공하거나 적절한 곳을 알려줄 수 있습니까?

감사합니다.

업데이트 : 저는 Peter가 옳다면 (아래 참조) OS X (Leopard)에서 Apache 2.2.11을 실행 중입니다.

업데이트 : 도움이 될 경우 입력 매개 변수는 "upload"=>#<File:/tmp/RackMultipart.64239.1>으로 기록됩니다. 나는 그것의 "부분"에 도착하기 위해 접근하는 방법을 모른다.

답변

4

을 업로드 읽을 때까지, 물리적 파일이 없습니다. 이것은 derfred의 회신과 일치합니다. 액세스 할 수있는 유일한 메타 데이터는 다음과 같습니다

uploaded_file.content_type # the uploaded file's MIME type 
uploaded_file.original_path # which is really just the name of the file 

은 또한 영구 파일 시스템에 기록 아마도 파일 '내용에 액세스 할 수 있도록하고 uploaded_fileread 방법이있다.

내가 알아챈 것 중 하나는 은 파일의 MIME 유형을 검사하는 Ruby 제안이 업로드 된 파일의 content_type 속성에 있음을 의미합니다. 파일이 파일 시스템에 있으면 더 이상 MIME 유형에 액세스하거나 결정할 수 없습니다.

0

저는 이것이 사용중인 웹 서버에 달려 있다고 생각합니다. mongrel, apache 및 nginx에 대해 다른 필드를 사용하는 것을 기억합니다.

+0

어. 그에 따라 원래 질문을 업데이트하겠습니다. 업로드를 덤프 할 수있는 정보가 거의 없다는 것에 놀랐습니다. –

0

이 그냥 파일 객체가, 당신이 이동하여 복제 할 수있는 일 :

File.open("some_file") 

/tmp/RackMultipart.64239.1을 단지이다 그러나 여기에 주제에 대한 철저한 토론이다 파일 이름. 당신이 컨트롤러/출력의 내용을 참조하십시오

은 : 지금까지 내가 말할 또는 발견 할 수있었습니다로

puts params[:upload].read 
+0

필자는 파일 이름이 영구적 인 위치에 저장하기 전에 검사 할 수있는 실제 파일을 나타냈다 고 생각합니다. 그럴 것 같지 않습니다. 업로드에서 수집 할 수있는 content_type 및 original_filename과 같은 속성이 있지만 그 당시에 사용할 수있는 속성의 전체 세트를 찾을 수 없습니다. –