Как печатать картинку в csv через php?

290
24 ноября 2017, 08:17

Здравствуйте, сделал скрипт который печатает в php и делает в csv формат. Так вот задаюсь вопросом, как реализовать загрузку изображений в csv через php.

Вариант - вставить тег html не прошёл :(

Вот мой код:

// output headers so that the file is downloaded rather than displayed
$filename = "basket_" . date('Y-m-d') . ".csv";
header('Content-Type: text/csv; charset=utf-8');
header("Content-Disposition: attachment; filename=\"$filename\"");
// create a file pointer connected to the output stream
$output = fopen('php://output', 'w');
// output the column headings
fputcsv($output, array(' ID модели ', ' Имя модели ', ' Фамилия модели ', ' День рождения ', ' Месяц рождения ', ' Год рождения ', ' Рост ', ' Мобильный телефон ', ' Контактное лицо ',  ' Профиль модели(Фото и подробная инфо.) '));
// fetch the data
mysql_connect('localhost', '', '');
mysql_select_db('');
$rows = mysql_query("SELECT user.id, user.name, user.surname, user.day, user.month, user.year, user.height, user.phone_mob, user.contact, basket.user
        FROM user
        INNER JOIN basket
        ON user.id = basket.user
        ORDER BY basket.id;");
          // loop over the rows, outputting them
while ($row = mysql_fetch_assoc($rows))
{
    if (isset($row['user']))
    {
        $row['user'] = 'http://site.com/models?id='.$row['user'];
    }
    if ($row['name'] == '')
    {
        $row['name'] = "(не указано)";
    }
    if ($row['surname']== '')
    {
        $row['surname'] = "(не указано)";
    }
    if ($row['day'] == '')
    {
        $row['day'] = "(не указано)";
    }
    if ($row['month'] == '')
    {
        $row['month'] = "(не указано)";
    }
    if ($row['year'] == '')
    {
        $row['year'] = "(не указано)";
    }
    if ($row['height'] == '')
    {
        $row['height'] = "(не указано)";
    }
    if ($row['phone_mob'] == '')
    {
        $row['phone_mob'] = "(не указано)";
    }
    if ($row['contact'] == '')
    {
        $row['contact'] = "(не указано)";
    }
    fputcsv($output, $row);
}
Answer 1

CSV - это сугубо текстовый формат.
Comma Separated Values - значения, разделённые запятыми.
Ни о каких картинках в нём речи быть не может.

Вам нужно собирать настоящий xls/xlsx.

Например, с помощью PHPExcel:

require_once('PHPExcel.php');
require_once('PHPExcel/Writer/Excel5.php');
$xls = new PHPExcel();
$xls->setActiveSheetIndex(0);
$sheet = $xls->getActiveSheet();
// Текст
$sheet->setCellValue("A1", 'Некий Текст');
// Картинка
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setPath('./images/picture.png');
$objDrawing->setCoordinates('A2');
// Вывод
header ( "Content-type: application/vnd.ms-excel" );
header ( "Content-Disposition: attachment; filename=table.xls" );
$objWriter = new PHPExcel_Writer_Excel5($xls);
$objWriter->save('php://output');
Answer 2

Один из вариантов кодировать картинку в base64.

$fh = fopen('/my/tmp/file.csv');
$values['name'] = 'Kiran';
$values['image'] = base64_encode(file_get_contents('/my/file/path.jpg'));
fputcsv($fh, $fields);
READ ALSO
Определение местоположения ipgeo

Определение местоположения ipgeo

Сайт nlspru определяется местоположение

271
Вызываемая function fetch() не объект

Вызываемая function fetch() не объект

var_dump($result); возвращает object(PDOStatement)#4 (1) { ["queryString"]=> string(0) "" }

287
MySQL отдает только нулевой элемент

MySQL отдает только нулевой элемент

При запросе к БД из PHP

232
Как добавить подтверждение по email! [требует правки]

Как добавить подтверждение по email! [требует правки]

Есть скрипт регистрации и авторизации, как же сделать еще и подтверждение по мылу после реги вот архив со всеми причиндалами https://yadisk/d/Ves1fc4F3PwGCX

224