двоичный файл (pdf) из базы данных на веб-странице с использованием PHP - PullRequest
0 голосов
/ 09 июня 2011

Я загрузил pdf-файл (varbinary (MAX)) в MSSQL, работающий на моем рабочем столе через VS2010 ( Ref ) с помощью только оператора UPDATE в ссылке.

Таблица содержитдополнительные данные, связанные с PDF, такие как имя, описание, дата.

Таблица в базе данных:

Name       |  Description    |    Date      |    File            |

DataSheet  |  Milling M/C    |  2004-01-01  |    <Binary data>   |

Можно ли отобразить содержимое таблицы на веб-странице как

Name       |  Description    |    Date      |    File            |`

DataSheet  |  Milling M/C    |  2004-01-01  | (link to the pdf)  |

или

Name       |  Description    |    Date      |    File            |

DataSheet  |  Milling M/C    |  2004-01-01  | (an icon of pdf)   |

используя PHP, чтобы пользователь мог щелкнуть ссылку / файл, чтобы просмотреть его.Будет много строк, я просто дал 1 строку, например.

Пожалуйста, дайте мне знать, если я не ясен, заранее спасибо.

PS: Я создал несколько изображений, но былне могу опубликовать их, извините за формат


Что я сделал до сих пор


Я использую «Подключение без DSN (используя строку подключения)» из здесь

$conn = new COM ("ADODB.Connection") or die("Cannot start ADO");

$connStr = "PROVIDER=SQLOLEDB;SERVER=".$myServer.";UID=".$myUser.";PWD=".$myPass.";DATABASE=".$myDB;

$conn->open($connStr);

$query = "select * from Table";

$rs = $conn->execute($query);

$num_columns = $rs->Fields->Count();

for ($i=0; $i < $num_columns; $i++) {
$fld[$i] = $rs->Fields($i);
    }

while (!$rs->EOF)
{
for ($i=0; $i < $num_columns; $i++) {
echo $fld[$i]->value;
    }   
$rs->MoveNext();    
}

В результате я получаю мусор для двоичных данных.

DataSheet | Milling M/C | 2004-01-01 | some_garbage |

1 Ответ

1 голос
/ 09 июня 2011

Да, это возможно. Создайте ссылку на отдельную страницу, которая принимает запись в строке запроса. Например, вы можете сослаться на ViewFile.php?recordid=123.

Затем в ViewFile.php вы можете получить двоичные данные, вывести несколько заголовков и вывести двоичный файл (я думаю, что для этого будет достаточно даже echo).

Заголовки должны содержать как минимум заголовок Content-Type, сообщающий браузеру, что двоичные данные должны интерпретироваться как application/pdf данные. Если это не PDF, вы должны указать соответствующие заголовки. Списки действительных типов контента можно найти по всему Интернету.

Вы также можете указать имя файла. Но важно то, что вы можете определить, какие это данные. Если вы не знаете, является ли это иконка или PDF, вы не можете сказать браузеру. Браузер должен знать (читая заголовок типа контента), как следует интерпретировать данные. Он не может догадаться, даже если URL будет иметь расширение .pdf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...