2012-12-11 2 views
2

배포를 위해 CDN을 사용하는 웹 사이트에서 파일을 다운로드하려고합니다. 다운로드 페이지의 URL은 모두 file.pdf로 끝나지만 브라우저에서 링크를 클릭하면 설명이 포함 된 파일 이름 (예 : 'invoice1234.pdf')이 다운로드됩니다. 분명히 URL을 파싱하여 파일 이름을 가져 오면 모든 파일의 이름이 file.pdf가됩니다. 브라우저를 통해 다운로드 할 때 사용되는 동일한 파일 이름을 사용하고 싶습니다. 내 코드는 다음과 같습니다.ruby로 생성 된 파일 이름을 사용하여 파일을 다운로드하고 기계화하려면 어떻게해야합니까?

filename = File.basename(download.href) 
    agent.pluggable_parser.default = Mechanize::Download 
    agent.get(mov_download_link.href).save("#{path}/#{filename}") 
    agent.pluggable_parser.default = Mechanize::File 

모든 아이디어를 얻을 수 있습니다! 파일 이름은 다음과 같습니다 헤더에 아마도 그건

답변

2

:

{'content-disposition' => 'filename="invoice1234.pdf"'} 

그렇다면 :

f = agent.get(mov_download_link.href) 
filename = f.header['content-disposition'][/"(.*)"/, 1] 
f.save("#{path}/#{filename}") 
+0

아니면은 "내용 - 처리" '처럼 보일 수 => "첨부 파일, 파일 이름 = invoice1234.pdf "'... 빠른 f.header [ 'content-disposition']. split ('=') [1]'은 잘 처리 할 것입니다. – poweratom