2012-01-26 6 views
0

이미 기존 CSV 파일에 데이터를 추가하는 스크립트를 작성했습니다. 다른 사용자에게도 제대로 작동하지만 한 사용자 파일은 다운로드 할 수 없기 때문에 브라우저에서만 열립니다. 파일에 기록 할 때 사용다운로드 파일을 강제로 다운로드하십시오.

헤더 :

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: private",false); 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"file.csv\";"); 
header("Content-Transfer-Encoding: binary"); 

나는 아약스에 의해 일부 사용자의 choise를 전송하고 파일에 대한 준비가 탐색이있을 때하고 있습니다.

$.get(urlJson ,function(){ 

    document.location.href = urlCsv; 

    }); 

저는 이것이 서버 문제라고 생각합니다. 어쩌면 무언가가 활성화되지는 않았지만 정확하게 모르겠습니다. 간단한에서 PHP와 다운로드를 강제

+0

[관련 가능성] (http://drupal.org/node/173697), 비슷한 MSIE 문제가 기억 나지만 정확한 이유와 해결책을 기억하지 못합니다. – Wrikken

답변

0

이다

header("Content-Description: File Transfer"); 
header("Content-Disposition: attachment; filename=THEFILENAME"); 
header("Content-Type: application/THEFILETYPE"); 
header("Content-Transfer-Encoding: binary"); 

사용자의 브라우저 그냥 (이것은 무엇을해야 하는지를 브라우저에게 달려 등) 또는 아마도 그것은 아무튼 파일을 다운로드 할 수있는 요청을 무시 가능하다 어떤 응용 프로그램/옥텟 스트림인지 알지 못합니다.

더 자세한 정보가 있습니까?

CSV는 MIME을 사용했기 때문에 "text/comma-separated-values, text/csv, application/csv"가 될 수 있습니까?

1

이것은

<?php 

$file = "data.csv"; 

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Type: application/force-download"); 
header("Content-Disposition: attachment; filename=".$file); 
header("Content-Description: File Transfer"); 
@readfile($file); 

?> 
0

유사 @Walkerneo 말한 ... 그러나, 인터넷 익스플로러의 일부 버전은 그들이 application/octet-stream로 무엇을 선택하는 등을해야한다. 예를 들어 내 웹 사이트 중 하나에서 IE는 항상 미디어 플레이어에서 mp3 파일을 열 것입니다. 해결책은 .htaccess 파일에 AddType mycompany/podcast mp3을 추가하는 것이 었습니다. 이와 같이 구성된 모든 유형은 IE가 명시 적으로 다운로드하도록 강제합니다.

관련 문제