PHP Curlのダウンロード

私は場所からファイルをダウンロードするためにCurlを使用しています

function get_data($url)
{
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  header("Content-Type: application/force-download"); 
  header("Content-disposition: attachment; filename=zipfile.tar.gz");
  echo $data;
}

$rt = get_data('http://slackbuilds.org/slackbuilds/13.37/multimedia/umplayer.tar.gz');

これはファイルをダウンロードしますが、それを開くことができません。適切なContent-Typeについて言及することは必須ですか?そして、このスクリプトを動画に使用しているので、私はContent-Type:Videoで試しましたが、それでもなお適切ではありません。

ベストアンサー

CURLOPT_BINARYTRANSFERをTRUEに設定し、コンテンツタイプを変更します。

<?php

$url = "http://slackbuilds.org/slackbuilds/13.37/multimedia/umplayer.tar.gz";
$opts = array(
  CURLOPT_URL =>$url,
  CURLINFO_CONTENT_TYPE => "text/xml",
  CURLOPT_BINARYTRANSFER => TRUE,
  CURLOPT_RETURNTRANSFER => TRUE
);

$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$info = curl_getinfo($ch); 
curl_close($ch);

header("Content-Type: application/x-gzip"); 
header("Content-disposition: attachment; filename=zipfile.tar.gz");

echo $data;
?>

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です