У меня есть python scritp, какой вызов выбрасывает web, мой агент LotusScript, я использую python библиотечные запросы для отправки пост-запроса моему агенту с файлом Excel. На сервере, когда я вызываю агента, я не могу получить мои двоичные данные с другим заголовком, для этого я использую переменную REQUEST_CONTENT. Я записываю эти данные в поток, затем создаю CreateMIMEEntity и записываю streem в эту сущность, как в результате я получаю недопустимые данные в файле.
Например, если python читает двоичные данные и я показываю их мне, первые 2 укуса «PK \ x03 \ x04» после сохранения «PK% 03% 04»
import requests
SITE_AGENT = "http://localhost/testAnon.nsf/saveFile?OpenAgent"
# download_file = requests.get("http://localhost/testAnon.nsf/9807d86fd907874dc225854d00471b71/b789c72cbd6ccfdfc225854d00472e7e/$FILE/murpl1.xlsx")
# open('murpl1.xlsx', 'wb').write(download_file.content)
file_name_list = ['testforUpload.xlsx']
headers = {"Content-Type":"application/x-www-urlencoded; charset=UTF-8"}
files= dict()
for file_name in file_name_list:
with open(file_name, 'rb') as file:
files[file_name] = file.read()
print(files[file_name])
upload_file = requests.post(SITE_AGENT,files=files,headers=headers)
Код LotusScript:
%REM
Agent saveFile
Created Apr 17, 2020 by Andriy Kosinskiy/CiNAU
Description: Comments for Agent
%END REM
Option Public
Option Declare
Sub Initialize
Dim session As New NotesSession
Dim stream As NotesStream
Dim streamLocal As NotesStream
Dim body As NotesMIMEEntity
Dim header As NotesMIMEHeader
Dim StringInBase64 As String
Dim db As NotesDatabase
Dim tempdoc As NotesDocument
Dim doc As NotesDocument
Set db=session.Currentdatabase
session.ConvertMIME = False ' Do not convert MIME to rich text
Set doc = session.DocumentContext
StringInBase64= doc.REQUEST_CONTENT(0)
Set tempdoc=db.Createdocument()
Set stream = session.CreateStream
'Call stream.Open("c:\text.txt", "ASCII")
Call stream.WriteText(StringInBase64)
Set body = tempdoc.CreateMIMEEntity()
' Added headers
Set header = body.createHeader("Content-Type")
Call header.setHeaderVal("multipart/mixed")
Set header = body.createHeader("Content-Disposition")
Call header.setHeaderVal("attachment; filename=testforUpload.xlsx")
Set header = body.createHeader("Content-ID")
Call header.setHeaderVal("testforUpload.xlsx")
Call body.SetContentFromBytes(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", ENC_IDENTITY_BINARY )
tempdoc.Dublicat = doc.REQUEST_CONTENT(0)
tempdoc.form="test"
Call tempdoc.save(True,False)
session.ConvertMIME = True ' Restore conversion
End Sub