Filemaker GetAs ... Как отобразить поле контейнера на веб-странице? - PullRequest
2 голосов
/ 12 ноября 2009

У меня есть приложение 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' Flash (FPX)

'qtif' Файл изображения QuickTime

FORK ' Ресурсная вилка (Mac OS)

'SGI' Общий растровый формат

'гифф' Формат обмена графиками

'snd' Стандартный звук (формат Mac OS raw)

'JPEG' Фотографические изображения

'TIFF' Растровый формат файла для цифровых изображений

'JP2' JPEG 2000

'TPIC' Targa

'META' Метафайл Windows (расширенный)

'XMLO' Макет объектов

'METO' Метафайл Windows (оригинал)

'8BPS' Фотошоп (PSD)

'Moov' Старый формат QuickTime (Mac OS)

Так что с этой информацией, мои вопросы:

  1. Как получить содержимое в нескольких форматах?
  2. Как мне отобразить БЛОГ в изображение на странице?

Любые предложения приветствуются!

Ответы [ 4 ]

0 голосов
/ 01 мая 2016

Это потому, что вы используете 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);
}

Где 0 в начале функции GetBytes - это индекс поля фотографии.

0 голосов
/ 18 ноября 2009

Спасибо, но, думаю, я узнал, что происходит. Если бы я сделал внутреннее соединение между таблицей изображений и другой таблицей, изображение не было возвращено (или возвращено должным образом ... не уверен, какое). Как только я запустил запрос непосредственно к таблице изображений, изображения были возвращены.

Так что это не сработало: выбрать * из biography_table b внутреннее соединение image_table i на b.stocknumber = i.stocknumber где b.stocknumber = 12345

Но это делает: выберите * из image_table где stocknumber = 12345

Это означает, что мне нужно выполнить 2 отдельных запроса, но, по крайней мере, я вижу данные !!

0 голосов
/ 05 мая 2011

Если вы не можете предсказать, каким будет тип файла, И / ИЛИ вам нужно использовать другие расширения (например, docx, xlsx и т. Д.), То вы можете использовать «FILE» исключительно для всех своих сценариев хранения и поиска.

Однако, делая это таким образом, FileMaker изначально не знает, как обрабатывать и открывать файл. Другими словами, при использовании FileMaker вам нужно будет вручную экспортировать содержимое поля, чтобы отредактировать / просмотреть его, вместо того, чтобы просто дважды щелкнуть поле, и он откроет файл. Таким образом, либо установка выгодна для FileMaker, либо выгодна для вашего внешнего приложения.

Если вы сделаете это таким образом, все файлы в полях контейнера будут называться «Untitled.dat», а их внутреннее имя будет «?», Поэтому вам также необходимо будет сохранить в другом поле фактическое имя файла или его расширение. так что вы можете открыть его позже.

0 голосов
/ 18 ноября 2009

Купите лицензию SuperContainer (предупреждение о бесстыдном подключении: я один из авторов) и Mac Mini для его размещения. Переместите файлы из полей контейнера в SuperContainer и позвольте SuperContainer визуализировать версии изображений ваших файлов, подключившись к библиотекам OSI CoreImage.

...