'content_type'에 해당되는 글 1건

아이폰은 다운로드 헤더를 대충 만들어도, 알아서 잘 보여준다.

그런데, 안드로이드 단말기는 그렇지 못한다.

지금까지 확인해 본 바로는 Content-Type의 mime type 과 Content-Disposition의 filename을 정확히 만들어 주는것이 아주 중요하다.


여기 저기 검색을 해 보면, 3가지 규칙을 얘기한다.

1. Content-Type을 application/octet-stream으로 할것

2. Content-Disposition을 파일명을 Double Quotation mark로 감쌀것.

3. 파일명의 확장자는 대문자로 할것.


하지만 이 규칙마저도 안드로이드 프로요 버전 이하일 경우에 해당하는 것 같다.

지금은 위 규칙에서 2번, 3번을 꼭 지키지 않아도 충분한것 같다.

참고로 아래는 일반적인 다운로드 코드이다.(IE를 잘 지원하기 위해서는 별도의 코드가 더 필요하다. ㅡㅡ)


하지만, 이번의 경우에는 파일 다운로드를 브릿지 역할을 하는 중간 서버를 통해서 해야 했기 때문에, 이렇게 간단하지가 않았다.

원본 서버에서 다운로드할 파일명과 mime-type을 HTTP Header에 내려줬기 때문에, 브릿지 역할의 서버에서는 이러한 정보를 간단한 방법으로는 안드로이드 단말기로 내려줄 수가 없었다.

아무 정보 없이, 확장자도 없이 다운로드 되는 케이스가 있었으며, 이 경우에 아이폰은 알아서 잘 보여줬지만, 안드로이는 정상적으로 보여주지 못하거나, 다운로드 실패가 되었다. 아..........


결국, 브릿지 서버에서 해당 화일을 HTTP Header 를 확인하여서 Header 정보를 바탕으로 파일을 저장하고, 이를 다시 내려주기로 했다.


Header 정보를 얻기 위해서는 curl의 옵션을 아래와 같이 사용했다.

다운로드 브릿지 서버를 사용해야 하는 이상한 상황이어서 더더욱 해매고 말았다.

새삼스럽게 'iOS가, Safari가 정말 잘 만들었진거구나' 라는 생각을 하게 되었다.

'PHP' 카테고리의 다른 글

Apache 서비스 포트 추가하기  (0) 2012.11.15
블로그 이미지

설기아빠

,