我已经通过VS2010(Ref)在我的桌面上运行的MSSQL中上传了一个pdf文件(varbinary(MAX)),只有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,以便用户可以单击链接/文件进行查看。会有很多行,例如我只给了一行。
如果我不清楚,请告诉我,提前谢谢。
PS:我确实创建了一些图片,但无法发布,抱歉格式
到目前为止我做了什么
我正在使用here
中的“不使用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 |
答案 0 :(得分:1)
是的,这是可能的。创建指向接受记录的单独页面的链接在查询字符串中。例如,您可以链接到ViewFile.php?recordid=123
。
然后,在ViewFile.php中,您可以获取二进制数据,输出一些标题,并输出二进制文件(我认为甚至echo也足够了)。
标题应包含至少一个Content-Type
标题,告诉浏览器二进制数据将被解释为application/pdf
数据。如果它不是pdf,则应指定适当的标题。可以在互联网上找到有效内容类型列表。
您也可以指定文件名。但重要的是你可以确定它是什么类型的数据。如果您不知道它是图标还是PDF格式,您也无法告诉浏览器。浏览器需要知道(通过读取内容类型标题)如何解释数据。即使网址的扩展名为.pdf,也无法猜测。