• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Проверка файла перед вставкой в Richtext-поле

  • Автор темы San40S
  • Дата начала
S

San40S

Доброго времени суток!
Значит есть такая задачка... на форме есть два RichText-поля (SFile и SSample). в SFile будет вставляться файл картинки, а в SSample - типа превью этой картинки.
Так вот, как вставить саму картинку в поле - проблем вроде нет, но необходимо еще, перед тем как вставить эту картинку, сделать проверочку, а именно:
- чтобы файл был в формате *.jpg;
- чтобы он был с разрешением в 200 dpi;
- чтобы он был в оттенках серого (типа ч/б).

Кто подскажет как такое можно организовать??

З.Ы. Код самой вставки рисунка:
Код:
	Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Dim mFile As Variant
Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document	
Set rtitem = doc.GetFirstItem("SFile")
If Not rtitem Is Nothing Then Call rtitem.Remove
Set rtitem = New NotesRichTextItem( doc, "SFile" )

mFile = ws.OpenFileDialog(False, "Choose your file", "JPG|*.jpg|JPEG|*.jpeg", "C:\")
If Not Isempty (mFile) Then	
Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", mFile(0))

uidoc.Document.saveOptions = "0"
Call uidoc.Close
uidoc.Document.Form = "Sign"
Set uidoc = ws.EditDocument(True, uidoc.Document, False)
Call uidoc.Document.RemoveItem("SaveOptions")

Call uidoc.GotoField("SSample")
Call uidoc.Import ("JPEG Image", Cstr(mFile(0)))
Else
Exit Sub
End If

З.З.Ы. В ws.OpenFileDialog можно и нужно указать фильтр по JPEG, но если в поле имени файла ввести, например, С:\1.txt (предварительно, чтобы этот файл был на создан), то несмотря ни на какие фильтры - наш файлик 1.txt - будет успешно открыт! :)

В общем нужно организовать проверку перед вставкой... как?
Профи, прошу Ваших советов и рекомендаций!!
 
H

hosm

.З.Ы. В ws.OpenFileDialog можно и нужно указать фильтр по JPEG, но если в поле имени файла ввести, например, С:\1.txt (предварительно, чтобы этот файл был на создан), то несмотря ни на какие фильтры - наш файлик 1.txt - будет успешно открыт!
OpenFileDialog
This method returns names. It does not open or perform any other action on files.
У тебя сразу после OpenFileDialog есть только имя файла, никто его еще не открывает.
Если хочешь ограничить расширение файла, воспользуйся проверкой расширения StrRightBack(mFile(0), ".")
Если именно на формат, как я поняла - ищи описание формата и читай нужную инфу из файла
(
пример )
Может, кто попроще посоветует варианты, полностью готовые к употреблению :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
как отсекать левые названия - это ваще из "дошкольной практики програмения"
судя по вопросу как анализировать файлы - вы не знаете ;)

гуглевание не модно, у поколения пепси, дайте фсё и сра :)

терь про контент файла

сначала теория...
нек. файлы (графич.) имеют сигнатуру, а нек. - нет...
и анализровать над хедером - задача для истинных индейцев :)

путей у вас несколько:
-использовать консольную утилиту (работает везде)
-использовать java (работает везде)
-использовать КОМу (работает в уиндоуз онли)

терь практика...

консольная утиль (ваще их много)
за вас уже всё сделали, например:
identify test1.jpeg
выдаст
test1.jpeg JPEG 260x151 260x151+0+0 8-bit DirectClass 10.3kb

identify - это утиль из бесплатного пакета imagemagick
под виндоуз (почему-то я не сомневаюсь, что у вас именно оно ;) ) есть её реализация


java
как заюзать java (через бридж):

вот так определить формат:


или вот (от настоящих индейцев):


и наконец, КОМа
что щас актуально в вянде и какая её версия какой компонент поставляет - не подскажу (где-то есть проги дефолтные, типа имеджвуер от МС, где-то нет)
есть вот такие:


задейстование из ЛС - подобно васику
 
N

nvyush

это всем клиентам ставить еще какую-то утилитку?
Тут, наверно, без холивара - выбирайте уже тогда java :)

Не, ну можно утилитку кинуть на расшаренный сетевой диск — одну на всех. Это если лень с джавой разбираться. Но я вообще-то за джаву.
 
S

San40S

У тебя сразу после OpenFileDialog есть только имя файла, никто его еще не открывает.
Если хочешь ограничить расширение файла, воспользуйся проверкой расширения StrRightBack(mFile(0), ".")
Если именно на формат, как я поняла - ищи описание формата и читай нужную инфу из файла
(
пример )
Может, кто попроще посоветует варианты, полностью готовые к употреблению ;)

Проверка расширения это понятно.., меня в большей степени интересует разрешение (я о 200dpi) и "цветность" - оттенки серого.

А вообще мне нравится идея с Java, но я не так уж силен в ней :(
З.Ы. Спасибо за участие в решении вопроса :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
а какие подробности нужны - код по ссылке
подключение java кода в LS - тоже...
можно и просто на java написать весь агент с передачей ему пути файла (через энвайромент или в доке)
вы начните тему изучать...
выж не предлвагаете мне весь код за вас писать?... :)
 
S

San40S

выж не предлвагаете мне весь код за вас писать?... ;)
Ни в коем случаи ;)

или вот (от настоящих индейцев):
Что есть - "от настоящих индейцев" ??
индейцев - американцев??
индейцев - ну, тип "тупых", что ли?? ))

А теперь ближе к теме..:
Вот по ссылке:
есть много всякого-такого.. но пока я не совсем въезжаю в букаффки что там написаны :)
Вижу проверки на форматы, на "цветность" и т.д. ... но хотелось бы "вырвать" оттуда только то, что нужно мне, а не все..
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
вы читать сначала пробывали ;)
там в коментах всё написано - что вызывать и как...
начиная со строки
31 * Use the class like this:
индейцы - терпиливые, пытливые и мудрые :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!