За последние 24 часа нас посетили 16726 программистов и 1694 робота. Сейчас ищут 933 программиста ...

PHP curl, скачка файлов

Тема в разделе "Прочие вопросы по PHP", создана пользователем maxidon, 16 мар 2014.

  1. maxidon

    maxidon Новичок

    С нами с:
    10 мар 2014
    Сообщения:
    2
    Симпатии:
    0
    Господа знатоки, столкнулся с проблемой, моя задача:
    1. Загрузить файл на сервер
    2. Запаковать его в архив
    3. Сохранить файл в папке
    Скачиваю с помощью curl
    Вот собственно и сам код функции:
    Код (Text):
    1. $ss = 'http://dl.zaycev.net/d04e7c3d-7de3-4879-bc95-27687155556f/28440/2844055/5sta_family_and_dj_pankratov_-_moya_melodiya.mp3';
    2. $in = $db->getOne('SELECT ID_file FROM upload WHERE URL = ?s',$ss);
    3. if (!empty($in)) {
    4.     $name = end(explode("/", $ss));
    5.     $name1 = explode(".", $name);
    6.     if (!empty($name) and !empty($name1[0])){
    7.     $path = '/'.$name;
    8.  header('Content-Description: File Transfer');
    9.    header('Content-Type: application/octet-stream');
    10.    header('Content-Disposition: attachment; filename='.$name);
    11.     $fp = fopen($path, 'w');
    12.  
    13.     $ch = curl_init($ss);
    14.  
    15.     curl_setopt($ch, CURLOPT_FILE, $fp);
    16. curl_setopt($ch, CURLOPT_RETURNTRANSFER,  false);
    17. curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
    18.  
    19.     curl_exec($ch);
    20.  
    21.     curl_close($ch);
    22. echo curl_errno($ch);
    23.     fclose($fp);  
    24.  
    25.      $file = file_get_contents($ss);
    26.      if (!empty($name1[0])){
    27.      $new_name = $name1[0].'['.date('d.m.Y').']'.rand(1, 9999).'.bz2';
    28.   $bz = bzopen('../dump_out/'.$new_name, 'w');
    29.   bzwrite($bz, $file);
    30.   bzclose($bz);
    31.  // unlink('../dump/'.$name);
    32.   $user = isLogin();
    33.   if ($user['is']) $id_u = $user['is']['id'];
    34.   else $id_u = 0;
    35.   $db->query("INSERT INTO upload (URL,name,ID_add) VALUES (?s,?s,?s)",$ss,$new_name,$id_u);
    36.   $ID_end = $db->getOne('SELECT ID_file FROM upload WHERE name = ?s',$new_name);
    37.   echo json_encode(array('mt'=>'file_suc','val'=>$ID_end));
    38.   } else exit(json_encode(array('mt'=>'error','val'=>'Ошибка 1')));
    39. } else (json_encode(array('mt'=>'error','val'=>'Ошибка 2')));
    40. } else echo json_encode(array('mt'=>'file_have','val'=>$in));
    Проблема вот в чем, на локальном сервера все работает на Ура!, перенес все на хостинг и тут поехало... Когда код загружает страницу $ss, то как я понимаю он должен сохранять ее в файл, но он открывает ее в браузере, заканчивается мой код страницы и затем
    Код (Text):
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4.     <meta content="text/html; charset=windows-1251" http-equiv="Content-Type"/>
    5.     <title>404 Мы не смогли найти файл, который вы запросили. Возможно он уже не существует.</title>
    6.     <style type="text/css">
    7.         * {
    8.             margin: 0;
    9.             padding: 0;
    10.             border: 0 none;
    11.         }
    12.  
    13.         body {
    14.             background: white;
    15.         }
    16.  
    17.         .download-error {
    18.             width: 600px;
    19.             margin: auto;
    20.             padding-top: 150px;
    21.         }
    22.  
    23.         .download-error__text {
    24.             font-family: Verdana, sans-serif;
    25.             font-size: 13px;
    26.             color: #000000;
    27.         }
    28.  
    29.         .download-error__text h1 {
    30.             font-size: 200%;
    31.             font-weight: bold;
    32.             margin: 2em 0 0.5em;
    33.         }
    34.  
    35.         .download-error__text p {
    36.             margin: 1em 0;
    37.         }
    38.  
    39.         .download-error__text a {
    40.             color: #a4621c;
    41.             text-decoration: none;
    42.         }
    43.  
    44.         .download-error__text a:hover {
    45.             color: #ff0000;
    46.         }
    47.     </style>
    48. </head>
    49. <body>
    50.  
    51. <!--LiveInternet counter--><script type="text/javascript">new Image().src = "//counter.yadro.ru/hit;zaycev?r" + escape(document.referrer) + ((typeof(screen)=="undefined")?"" : ";s"+screen.width+"*"+screen.height+"*" + (screen.colorDepth?screen.colorDepth:screen.pixelDepth)) + ";u"+escape(document.URL) + ";h"+escape(document.title.substring(0,80)) + ";" +Math.random();</script><!--/LiveInternet-->
    52.  
    53. <!-- Yandex.Metrika counter -->
    54. <script type="text/javascript">
    55. (function (d, w, c) {
    56.     (w[c] = w[c] || []).push(function() {
    57.         try {
    58.             w.yaCounter14469772 = new Ya.Metrika({id:14469772, enableAll: true, webvisor:true, params:window.yaParams||{}});
    59.             w.yaCounter14469772.reachGoal("download_error");
    60.         } catch(e) {}
    61.     });
    62.    
    63.     var n = d.getElementsByTagName("script")[0],
    64.         s = d.createElement("script"),
    65.         f = function () { n.parentNode.insertBefore(s, n); };
    66.     s.type = "text/javascript";
    67.     s.async = true;
    68.     s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";
    69.  
    70.     if (w.opera == "[object Opera]") {
    71.         d.addEventListener("DOMContentLoaded", f);
    72.     } else { f(); }
    73. })(document, window, "yandex_metrika_callbacks");
    74. </script>
    75. <noscript><div><img src="//mc.yandex.ru/watch/14469772" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    76. <!-- /Yandex.Metrika counter -->
    77.  
    78. <div class="download-error">
    79.     <div class="download-error__text">
    80.         <h1>ТУТ ЗАЙЦЕВ НЕТ!</h1>
    81.  
    82.         <p>
    83.             404 Мы не смогли найти файл, который вы запросили. Возможно он уже не существует.
    84.         </p>
    85.  
    86.         <p>
    87.             Вернуться на <a href="http://zaycev.net/">главную страницу</a>.
    88.         </p>
    89.     </div>
    90. </div>
    91.  
    92. </body>
    93. </html>
    94. {"mt":"file_suc","val":"67"}
    как можно решить это? Пробовал загружать и через гет контент, мув загрузку, copy(). Ничего не получается, везде такой же ответ. Возможно такое что хостинг запрещает мне что-то делать? если запрещает, то что мне им написать по этому поводу, на что ссылаться?