• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблема с аттачем

  • Автор темы twister
  • Дата начала
T

twister

Имеется вот такая функция:
Код:
Public Function InsertFileToField(uSrcDocument As NotesDocument, sFieldName As String, _
sPathName As String) As Boolean
On Error Goto Error_

InsertFileToField = False
Dim uDocument As NotesDocument
If (uSrcDocument Is Nothing) Then
Dim uUIWorkSpace As New NotesUIWorkspace
Dim uUIDocument As NotesUIDocument
Set uUIDocument = uUIWorkSpace.CurrentDocument
Set uDocument = uUIDocument.Document
Else
Set uDocument = uSrcDocument
End If

Dim uRTItem As NotesRichTextItem
Dim uObject As NotesEmbeddedObject
If uDocument.HasItem(sFieldName) Then
Set uRTItem = uDocument.GetFirstItem(sFieldName)
If (uRTItem.Type = RICHTEXT) And (uDocument.HasEmbedded) Then
Forall uObjTmp In uRTItem.EmbeddedObjects
If (Format(uObjTmp.Name, ">") = Format(ExtractFileName(sPathName), ">")) Then
Set uObject = uObjTmp
End If
End Forall
End If
Else
Set uRTItem = uDocument.CreateRichTextItem(sFieldName)
End If
If Not(uObject Is Nothing) Then
Dim sTmp As String
sTmp = "In field '" & sFieldName & _
"' already exist attach with filename '" & ExtractFileName(sPathName) & _
"'" & sLN & "Do you want to replace it?"
If (Messagebox(sTmp, MB_YESNO + MB_ICONQUESTION, "Continue?") = IDYES) Then
Call uObject.Remove
Else
Goto Exit_
End If
End If
Call uRTItem.EmbedObject(EMBED_ATTACHMENT, "", sPathName)

If (uSrcDocument Is Nothing) Then
Dim uUIDocumentNew As NotesUIDocument
Set uUIDocumentNew = uUIWorkSpace.EditDocument(True, uDocument)
Call uDocument.ReplaceItemValue("SaveOptions", "0")
Call uUIDocument.Close
Set uDocument = uUIDocumentNew.Document
Call uDocument.ReplaceItemValue("Form", uDocument.GetItemValue("Form")(0))
End If

InsertFileToField = True

Exit_:
Exit Function

Error_:
Messagebox sError & Error$ & " (#" & Trim(Str(Err())) & ": line: " & Trim(Cstr(Erl())) & ")" _
& " in subroutine " & Cstr(Getthreadinfo(LSI_THREAD_PROC)) _
& " from subroutine " & Cstr(Getthreadinfo(LSI_THREAD_CALLPROC))
Resume Next
End Function

Вопрос: Файл сразу не аттачится к полю. Если в документ перезайти - аттач висит снизу, а не в нужном нам поле.
 
M

morpheus

А вызов ф-ции сложно было описать?

sFieldName - какой передаёте?

<!--QuoteBegin-twister+6:11:2007, 14:57 -->
<span class="vbquote">(twister @ 6:11:2007, 14:57 )</span><!--QuoteEBegin-->Если в документ перезайти
[snapback]84439" rel="nofollow" target="_blank[/snapback]​
[/quote]
Это фишка работы с РТ полем
 
T

twister

<!--QuoteBegin-Morpheus+6:11:2007, 18:00 -->
<span class="vbquote">(Morpheus @ 6:11:2007, 18:00 )</span><!--QuoteEBegin-->А вызов ф-ции сложно было описать?
[snapback]84440" rel="nofollow" target="_blank[/snapback]​
[/quote]

InsertFileToField(curdoc,"Body","d:\1.doc")
 
M

morpheus

Ну значит в документе скорее всего нету этого поля, это раз,

во вторых без перезахода в документа у Вас вложения точно не появяться - это факт
 
S

Sandr

Причина несколько друга... :)

Файл пытаемся атачить на бекенде, и хотим сразу же его увидить? Да и потом его не увидитеЮ, так как если атачить файл на бекенде, он формально атачится к РТ итему, но фактически к документу... Попробуйте ради эксперимента получить аттачь из этого итема после переоткрытия документа - не получите... Выход - атачьте файл на уи... @Command( [EditInsertFileAttachment] ; file ; compress ) вам в помощь... :D
 
Мы в соцсетях:

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