Lotusscript: проблема с отправкой файла из электронной почты на веб-сайт на PHP

#php #lotus-notes #lotus-domino #lotusscript

#php #lotus-notes #лотос-домино #lotusscript

Вопрос:

Я хотел бы отправить файлы с моего текущего адреса электронной почты на мой веб-сайт через агент lotusscript. Я хотел бы сделать что-то вроде этого: (я знаю, что этот код не может работать, но это для того, чтобы показать идею)

 Sub Initialize
    On Error GoTo ErrorHandler
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim item As Variant
    Dim uidoc As NotesUIDocument
    Dim CurrentDocColl As NotesDocumentCollection
    Dim url As String
    Dim jsonBody As String
    Dim http As NotesHTTPRequest
    Dim headers As Variant
    Dim ret As Variant

    Set Session = New NotesSession
    Set db = Session.Currentdatabase
    Set CurrentDocColl = db.Unprocesseddocuments 
    Set doc = CurrentDocColl.Getfirstdocument
    While Not doc Is Nothing
        Set item = doc.GETFIRSTITEM("Body")
        If doc.HasEmbedded Then
            url="http://myurl.com/addFiles.php"
            jsonBody="value={""id"":""7777"",""file"":""" item.EmbeddedObjects """}"

            Set http=session.CreateHTTPRequest()
            http.preferstrings = True

            Call http.SetHeaderField("ContentType","application/json")

            ret = http.Post(url, jsonBody)
            MessageBox ret
        End If
        Set doc=CurrentDocColl.Getnextdocument(doc)
    Wend
    
    Exit Sub
ErrorHandler:  
    MessageBox "Erreur N° : "  Cstr(Err)_    ' code numérique de l'erreur  
     " Description : "   Error(Err)_      ' La description de l'erreur 
      " Ligne N° : "  CStr(Erl)_   ' La ligne où se trouve l'erreur 
     "",16, " ERREUR !" 
    Exit Sub
End Sub
 

Вот мой php-код, который будет извлекать файлы:

 header("Vary: Origin");
header("Content-type: application/json");

if (isset($_FILES['file'])) {
    $total = count($_FILES['file']['name']);
    for ($i = 0; $i < $total; $i  ) {
        $tmpFileName = $_FILES['file']['tmp_name'][$i];
        echo $tmpFileName;
    }
}
 

Как я могу отправить его файлы на свой сайт? Потому что обычно в Javascript, когда мы хотим отправить файлы в PHP-код, мы отправляем их в FormData, который содержит поле типа «файл». Но я не знаю эквивалента в lotusscript. Я немного не понимаю, как это сделать.
Спасибо за вашу помощь!

Ответ №1:

Вам нужно будет использовать метод ExtractFile класса NotesEmbeddedObject, чтобы сохранить данные вложения в файл, а затем вам нужно будет прочитать содержимое файла и поместить его в переменную, которую вы отправляете для данных POST. Насколько я знаю, нет ярлыка для выполнения этого за один шаг. Прошло много лет с тех пор, как я использовал эту технику, и это было в коде Java, а не в LotusScript. Обратите внимание, что ваш код должен иметь разрешения на создание файлов на сервере или клиенте, на котором выполняется код.

Комментарии:

1. Здравствуйте, спасибо за ваш совет, у вас есть пример того, как это сделать? Потому что я понимаю, что вы говорите, но я не знаю, как это сделать.

2. Нет, у меня нет примера кода, который я мог бы вам дать. Если вы попробуете это самостоятельно и у вас возникнут проблемы с этим, вы можете опубликовать новый вопрос здесь, в StackOverflow, и многие из нас смогут вам помочь. И я думаю, что если вы поищете здесь, в StackOverflow, то, о чем я упоминал, вы, вероятно, найдете примеры кода в других контекстах, где вы можете узнать о том, как использовать NotesEmbeddedObject.ExtractFile, как читать содержимое файла и как правильно форматировать данные POST для передачи вложения файла.