2

我有一个 ASP.Net 应用程序,它需要显示存储在 Filemaker Container 字段中的图像。我的查询语句如下所示:

SELECT GetAs(Image, 'JPG') FROM UA_Item_Pictures WHERE "Stock Number" = 33989 AND ImageOrder = 1

根据文档:您可以从 FileMaker 数据库文件中的容器字段检索的可能文件类型(区分大小写)是:

'EMBO' OLE 容器数据

'PDF' 可移植文件格式

'EMF+' Windows 增强型图元文件

'PICT' Mac OS(没有 512 字节的基于文件的标头)

'EPS' 嵌入式 PostScript

'PNGf' 位图图像格式

'FILE' 插入文件命令的结果

'PNTG' MacPaint

'FPix' 闪存 (FPX)

'qtif' QuickTime 图像文件

'FORK' 资源分叉 (Mac OS)

'.SGI' 通用位图格式

'GIFf' 图形交换格式

'snd' 标准声音(Mac OS 原始格式)

'JPEG' 摄影图像

用于数字图像的“TIFF”光栅文件格式

'JP2' JPEG 2000

'TPIC' 塔尔加

'META' Windows 图元文件(增强)

'XMLO' 布局对象

'METO' Windows 元文件(原始)

'8BPS' PhotoShop (PSD)

'moov' 旧 QuickTime 格式 (Mac OS)

因此,有了这些信息,我的问题是:

  1. 如何检索多种格式的内容?
  2. 如何将 BLOG 呈现为页面上的图像?

我们欢迎所有的建议!

4

4 回答 4

0

谢谢,但我想我知道发生了什么。如果我在图像表和另一个表之间进行了内部连接,则图像不会被返回(或被正确返回......不确定是哪个)。只要我直接对图像表运行查询,就会返回图像。

所以这不起作用: select * from biography_table b inner join image_table i on b.stocknumber = i.stocknumber where b.stocknumber = 12345

但这确实: select * from image_table where stocknumber = 12345

这意味着我必须运行 2 个单独的查询,但至少我看到了数据!!

于 2009-11-18T15:28:35.207 回答
0

如果您无法预测文件类型,并且/或者您需要使用其他扩展名(例如 docx、xlsx 等),那么您可以将“文件”专门用于所有存储和检索脚本。

但是,这样做意味着 FileMaker 本身并不知道如何处理和打开文件。换句话说,在使用 FileMaker 时,您需要手动导出字段的内容以进行编辑/查看,而不是简单地双击字段并打开文件。因此,该设置要么对 FileMaker 有利,要么对您的外部应用程序有利。

如果这样做,容器字段中的所有文件都将称为“Untitled.dat”,它们的内部名称将是“?”,因此您还需要在另一个字段中存储实际文件名或其扩展名,以便您可以稍后打开它。

于 2011-05-04T23:40:09.077 回答
0

这是因为您使用的是 JPG 而不是 JPEG,实际上,您的问题自己回答了。你可以这样读

SELECT GetAs(Image, 'JPEG') ...

然后,如果您使用的是 ado.net,请以这种方式阅读

var bytesLength = reader.GetBytes(0, 0, null, 0, 0);
var buffer = new Byte[bytesLength];
var bytes = reader.GetBytes(0, 0, buffer, 0, (int)bytesLength);
using (var fileStream = new FileStream(String.Format("{0}.jpg", Guid.NewGuid().ToString()), FileMode.Create, FileAccess.Write)) {
    fileStream.Write(buffer, 0, buffer.Length);
}

其中 GetBytes 函数开头的 0 是照片字段的索引。

于 2016-04-30T21:23:34.933 回答
-1

购买SuperContainer的许可证(无耻的插件警告:我是作者之一)和 Mac Mini 来托管它。将文件从容器字段中移出并放入 SuperContainer,并让 SuperContainer 通过利用 OS X 的 CoreImage 库来渲染文件的图像版本。

于 2009-11-18T03:10:50.217 回答