2015-06-10 3 views
0

Я написал функцию php, которая загружает некоторые (.exe) файлы, используя расширение curl. Файл успешно загружен, но когда я пытаюсь его открыть, я получаю несовместимую ошибку. Я открыл его, используя блокнот ++, и там я вижу, что «200» добавлено в начало файла. Я не могу понять, откуда это «200»? вот моя функция:файл скачать с curl и php

$source = isset($_GET['link']) ? $_GET['link'] : ''; #get the download link 
$filename = isset($_GET['name']) ? $_GET['name'] : 'download.exe'; # define name 
if($source != '') 
{ 
      $handle = curl_init($source); 
      curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); 

      /* Get the HTML or whatever is linked in $url. */ 
      $response = curl_exec($handle); 

      /* Check for 403 (forbidden). */ 
      $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); 
      if($httpCode == 403) { 
       echo "<h2> <font color='red'> Sorry you are not allowed to download that file.</font><h2>"; 
      } else { 
       header("Content-Disposition: attachment; filename=\"{$filename}\""); 
       #header("Content-Disposition: attachment; filename=\"uploaded.pdf\""); 
       // Get a FILE url to my test document 

       $url= str_replace(" ","%20", $source); 
       $ch= curl_init($url); 
       #curl_setopt($ch, CURLOPT_URL, $url); 
       curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); 
       curl_exec($ch); 
       curl_close ($ch); 
      } 
      curl_close($handle); 
} 
else { 
echo "error"; 
} 
+1

200 Это код ответа HTTP означает ОК. – venca

+0

Да, я знаю, но почему это написано в файле? – arakibi

ответ

0

Set CURLOPT_HEADER ложь, как:

curl_setopt($ch, CURLOPT_HEADER, false); 

Это отключит ответ HTTP, так что вы не получите «200» в файле.

Similar question here in SO

+0

Я попробовал, но 200 все еще там:/ – arakibi

+1

О, это действительно сработало ... Большое вам спасибо (y) – arakibi

+0

У вас может быть идея, почему только в firefox файл загружается с помощью .htm в конце? – arakibi