ФорумПрограммированиеPHP для идиотов → построение файла и скачивание

построение файла и скачивание

  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Май 21, 2010, 3:08 п.п.

    Здарова всем ПЫХтящим!

    такой вопрос:
    как сделать так, чтоб при нажатии на ссылку "строился" файл и потом можно было его скачать…
    точнее чтоб ссылка указывала на файл, словно он уже есть…
    ???????????
  • aeasy

    Сообщения: 43 Репутация: N Группа: Адекваты

    Spritz Май 21, 2010, 3:11 п.п., спустя 3 минуты 20 секунд

    точнее чтоб ссылка указывала на файл, словно он уже есть…

    А его нет?

    Объясни человеческим языком, чего ты хочешь.
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Май 21, 2010, 3:16 п.п., спустя 4 минуты 59 секунд

    кликаю на ссылку "get file"
    и после этого должен сформироваться файл (должен произвестись выбор данных из БД)… и появилось окошко типо: хотите скачать файл или открыть его
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz Май 21, 2010, 3:17 п.п., спустя 55 секунд

    ты хочешь чтобы по ссылке /chegoytotam/myFile.txt отвечал скрипт /chegoytotam/makeTxt.php?
    или что?
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Май 21, 2010, 3:20 п.п., спустя 3 минуты 16 секунд

    я хочу чтоб: нажать на ссылку и мог скачать файл, словно он есть уже на сервере.
    но на самом деле его нет там.
    для этого мне надо его создать и потом скачать!

    вот и вопрос: как это сделать одним кликом:? создать файл удаленно, затем скачать его на рабочий стол, и удалить с сервера?
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz Май 21, 2010, 3:22 п.п., спустя 1 минуту 58 секунд

    как это сделать одним кликом:? создать файл удаленно, затем скачать его на рабочий стол, и удалить с сервера?

    на каком этапе у вас проблемы ?
    не умеете файл создавать ?
    не знаете как его отдавать с сервера ?
    не знаете как удалить файл ?

    с чем у вас трудности ?
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Май 21, 2010, 3:24 п.п., спустя 1 минуту 43 секунды

    вот, не знаю как отдать с сервера.

    могу создать, и удалить его…
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz Май 21, 2010, 3:25 п.п., спустя 1 минуту 18 секунд

    так в чем проблема? ссылка на "/getNewDownload.php".создаешь файл скриптом. и отправляешь в браузер.

     header("Content-type: application/mp3");
     header("Content-Length: ".$fSize);
     header("Content-Disposition: attachment; filename=".$file_name);
     header("Content-Transfer-Encoding: binary");
     
    if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
     header('Content-Type: application/force-download');
      else
     header('Content-Type: application/octet-stream');
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Май 21, 2010, 3:36 п.п., спустя 10 минут 30 секунд

    вот файл!
    [man]
    <?php
    require_once('configbd.php');
    $get_price = '';
    $query = "SELECT * FROM subbrand ORDER BY brand ASC";
    $result = mysql_query($query);
    $i = 1;
    $num_result = mysql_num_rows($result);
    while ($row = mysql_fetch_array($result))
    {
    if ($i < $num_result)
    {
    $get_price .= "shop,1,".$row['sub_code'].",".$row['price']."\r\n";
    }
    else
    {
    $get_price .= "cheap-online,1,".$row['sub_code'].",".$row['price'];
    }
    $i++;
    }
    $file_name = 'price.csv';
    $file = fopen($file_name,"w");
    fwrite($file,$get_price);
    fclose($file);
    header('Content-type: application/csv');
    header('Content-Disposition: attachment; filename="price.csv"');
    //header('location:index.php');
    ?>
    [/man]

    а вот ошибка
    <br />
    <b>Warning</b>: Cannot modify header information - headers already sent by (output started at T:\home\localhost\first_work\adminer\price.php:26) in <b>T:\home\localhost\first_work\adminer\price.php</b> on line <b>27</b><br />
    Спустя 69 сек.

    require_once('tcenoc.php');
    $get_price = '';
    $query = "SELECT * FROM jos__coffeesubbrand ORDER BY brand ASC";
    $result = mysql_query($query);
    $i = 1;
    $num_result = mysql_num_rows($result);
    while ($row = mysql_fetch_array($result))
    {
    if ($i < $num_result)
    {
    $get_price .= "cheap-online,1,".$row['sub_code'].",".$row['price']."\r\n";
    }
    else
    {
    $get_price .= "cheap-online,1,".$row['sub_code'].",".$row['price'];
    }
    $i++;
    }
    $file_name = 'coffeeprice.csv';
    $file = fopen($file_name,"w");
    fwrite($file,$get_price);
    fclose($file);
    header('Content-type: application/csv');
    header('Content-Disposition: attachment; filename="coffeeprice.csv"');
    //header('location:index.php');
  • aeasy

    Сообщения: 43 Репутация: N Группа: Адекваты

    Spritz Май 21, 2010, 3:40 п.п., спустя 4 минуты 14 секунд

    Ну тогда показывайте где у вас в файле price.php строка 27 (и еще парочка снизу и сверху).
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Май 21, 2010, 3:41 п.п., спустя 30 секунд

    последние 2 строки
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Май 21, 2010, 3:46 п.п., спустя 4 минуты 56 секунд


       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", false);
       header('Content-Disposition: attachment; filename="' . $filename . '";');
       header("Content-Transfer-Encoding: binary");
       header("Content-Length: " . $filesize);
       exit(file_get_contents($filepath));
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Май 21, 2010, 3:51 п.п., спустя 5 минут 22 секунды

    причем, файл который на серваке создается, то все хорошо, а вот тот что качаешь, то c warningom
  • ilma55

    Сообщения: 193 Репутация: N Группа: Кто попало

    Spritz Май 21, 2010, 4:07 п.п., спустя 15 минут 41 секунду


    все, сделал!
    спасибо всем!

    вот код:

    header('Content-type: application/csv');
    header('Content-Disposition: attachment; filename="coffeeprice.csv"');
    readfile('coffeeprice.csv');

    есть ли какие-то отрицательные моменты у него?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz Май 21, 2010, 4:11 п.п., спустя 4 минуты 17 секунд

    отдавать файл скриптом - плохо

Пожалуйста, авторизуйтесь, чтобы написать комментарий!