테스트 사이트 - 개발 중인 베타 버전입니다

확장자가 없는 텍스트 파일을 다운로드 하도록 설정 하는 방법 문의

잠돌 7년 전 조회 5,475

php서버에서 헤더 없이 텍스트만 존재하는 파일을 확장자 없이 하나 생성합니다.

ckd_id 라는 파일안에 텍스트로 기입 하는데요.

이걸 URL/ckd_id 하면 부라우저가 텍스트를 출력합니다.

이 상태에서 파일 안에 별도의 헤더나 php 코드를 넣을 수 없습니다.

이 파일을 URL/ckd_id 형식으로 접근 하면 다운로드가 실행되어야 하는데요.

서버에서 어떻게 설정해야 이게 다운로드 될까요?

mime는 확장자에 따라 설정하는 거지 없는 것에 대한 설정은 안보이는데.....

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

6년 전

자답입니다.

 

filematch 안에서 ForceType을 이용해 해결 하였습니다.

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

유찬아빠

별도의 다운로드 루틴을 작성하셔서 

강제로 txt 확장자를 붙여주면 됩니다.

그래야 다운로드 하고 열어볼수 있겠지요.

 

    header("content-type: file/unknown");     header("content-length: ".filesize("$filepath"));     header("content-disposition: attachment; filename=\"$file\".txt");     header("content-description: php generated data");

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

잠돌
7년 전
이 상태에서 파일 안에 별도의 헤더나 php 코드를 넣을 수 없습니다.
오로지 서버에서만 설정해야 합니다.
이 정책은 제가 정하는게 아닌 API를 제공하는 레퍼런스에서 제약사항으로 걸어둔거라 변경이 불가능합니다.
그게 안되면 apm을 버리고 톰캣을 써야 하는 상황이라서요.
유찬아빠
7년 전
$f = @fopen($file, 'a');

fwrite($f, "<?php\n");

fwrite($f, "?>");

fclose($f);

php 코드를 넣을 수 없다는 말씀이 이해하기 어렵네요?
잠돌
7년 전
사용하는 제품군의 api가 호출 하면 확장자가 없는 텍스트 파일로 ckd_id라는 버전 정보를 생성합니다.
이 동작은 수시로 실행되고 매번 실행 될 때 마다 파일을 새로 생성되는거구요.
이 동작에 끼워넣어 파일에 php 코드나 기타 로직을 넣을수 없습니다.
이 파일을 어플리케이션이 다운로드 하여 버전을 체크합니다.

이 동작이 톰캣이나 기타 서버에서는 정상이지만, php 서버에서는 유독 파일을 다운로드 하지 않고 부라우저에 출력합니다.
그래서 버전 체크가 안되는 상태구요.

말 그대로 해당 ckd_id 파일 안에는 어떤 헤어나 웹 로직을 끼워 넣을 수 없습니다.
저도 그동안 경험 못해본 케이스라서요 ㅠㅠ
유찬아빠
7년 전
혹시 어플리케이션 이 웹뷰기반 php 인가요?
잠돌
7년 전
아니요 백신입니다.
백신 업데이트 구성중이고 PHP로 커스텀 시도 중인데 현재 톰캣에서는 정상 동작 중이고요.
이식성 및 B2B용 시스템 구축 이슈 관련해서 아예 시스템을 PHP7을 채용하기로 했습니다.
PHP로 커스텀 과정에서 위와 같은 현상이 발생 했는데, 백신 내부에 들어가 있는 별도의 제품 군은 이 경우 커스텀이 불가능합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인