PHP- 파일 다운로드 상자
-
08-07-2019 - |
문제
CSV 파일을 다운로드 할 수있는 링크를 사용자에게 제공합니다 ...
Click <a href="report.csv">here</a> to download your file.
이 텍스트와 링크는 작은 팝업 창 -Height 100 너비 400에 표시됩니다.
사용자가 "저장"을 클릭하면 문제가 없으면 파일이 원하는 곳에 저장됩니다.
"열기"를 선택하면 CSV 파일이 작은 팝업 창에 표시됩니다. 내가 원하는 것 - 나는 Excel이 Excel에 파일을 열고 표시하는 것을 선호하거나 "열기"버튼을 비활성화하는 것이 가능한 옵션 일 수도 있습니다.
내가 달성 할 수있는 방법이 있습니까?
감사,
해결책
나는 당신이 JavaScript를 사용하여 그 팝업 박스를 열고 있다고 가정합니다. 그래서 나는 당신의 작은 "다운로드"팝업 상자를 보여 주거나 열지 말고 대신 웹 페이지 에이 링크를 보여줄 것을 제안합니다. 따라서 누군가 링크를 클릭하면 브라우저가 파일을 다운로드하도록 강제로 파일을 열고 싶을 때 Browswer의 Windows 크기만큼 넓은 시야를 얻을 수 있습니다.
// 예를 들어, ZIP 파일의 다운로드를 강제하려면 헤더를 다음과 같이 보냅니다.
// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
다른 팁
어떤 애플리케이션에서 어떤 파일 유형을 열 었는지와 같은 사용자의 설정에 대한 전원이 없습니다. 그들은 설정으로 가서 파일 연관성을 변경해야합니다. 그러나 모든 사람이 Excel을 설치 한 것은 아니므로 사용자 가이 특정 응용 프로그램에서 CSV 파일을 열도록 강요하는 것은 좋은 생각이 아닙니다.
또한 열린 옵션을 비활성화 할 수 있다고 생각하지 않습니다. 이것은 웹 브라우저의 구성에 의해 지시되어 창을 표시 할 것인지 아니면 관련 응용 프로그램을 직접 시작하는지 등이없는 것 같습니다. 당신의 특별한 경우에 운이 좋다.
나는 이것이 OS 수준이라고 믿고 변경할 수 없다고 생각합니다.
반 솔루션이 추가되고 있습니다 target="_blank"
태그에. 이렇게하면 사용자가 '열기'옵션을 선택하면 최소한 파일이 새 (전체 스크린 또는 최소한 재판용 가능한) 창으로 열립니다.
그 외에는 Ceejayoz가 말했듯이 창의 동작을 변경할 수 없습니다.
- 이 시점 이전에 다른 출력을하지 않도록하십시오.
- CSV 문자열을 빌드하고 $ csvstring에 저장하십시오.
- $ csv_filename으로 적절한 파일 이름을 제공하십시오
헤더는 브라우저에 Excel에로드하도록 지시해야합니다.
header("Cache-Control: maxage=1");
header("Pragma: public");
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=$csv_filename");
echo $csvString;