2011-02-17 1 views
3

드루팔 (Drupal에서 양식을 개발하는 동안 막혀 있습니다. 유효한 제출시 폼이 클라이언트와 함께 http 파일 전송을 시작하고 파일이 아닌 메모리 내 문자열에서 생성 된 데이터로 파일 다운로드 프롬프트를 열도록합니다.Drupal에서 http 다운로드를 통해 파일이 아닌 문자열의 내용을 클라이언트로 직접 전송하는 방법은 무엇입니까?

file_transfer($source, $headers) 꽤 유망 해 보였지만 $ source는 파일의 URI로 예상됩니다. 파일 URI 대신 문자열의 내용을 받아들이는 비슷한 함수가 있습니까? Drupal API 문서를 검색 한 결과 아직 아무것도 찾지 못했습니다.

header("header statements"); 
header("more header statements"); 
echo $string_contents; 
exit; 

물론이 방법은 장기적으로 좋은 일들로 이어질 수 드루팔의 폼 처리를 중단 :

나는 또한 (hackish)보다 수동 접근 방식을 시도했다.

도움을 주시면 감사하겠습니다. 감사! 이러한 라인을 따라

답변

6

뭔가 :

http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_set_header/6

다음에 검색 될 수 드루팔에

<?php 
header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"my-file.txt\""); 
$data="Hey this is a text file, yay \n"; 
$data .= "it has stuff in it"; 
echo $data; 
?> 

배열에서 정적 헤더()에 저장 헤더를 감싸는 함수가 :

http://api.drupal.org/api/drupal/includes--common.inc/function/drupal_get_header/6

+0

매우 유용한 해결책. 이 파일은 클라이언트에게 다운로드 할 파일을 제공합니다. 하나의 사소한 문제 : Drupal이 전체 ​​페이지를 새로 고침 할 때까지 drupal_set_message를 통해 전송 된 메시지는 통과하지 못합니다. 이 메시지를 제거하거나 대신 로그 파일로 보낼 수 있습니다. 사용자가 다운로드 할 파일을 제공 받았을 때 보내려는 메시지가 중복되어 사소한 문제입니다. – ford

관련 문제