HCL Domino AppDevPack - написать приложения - PullRequest
0 голосов
/ 30 сентября 2019

Новый V1.0.2 имеет новые возможности для загрузки вложений в документ домино. Мой код загрузки успешен, пока я использую файлы <= 48 КБ. Как только я пытаюсь загрузить файл большего размера, происходит загрузка, в документе domino я нахожу вложение правильного размера, но файл поврежден! </p>

Вот мой код (соответствует примеру кода изДокументация пакета appdev для больших файлов):

for (var x = 0; x < files["tskFile"].length; x++) {          
          let sFilename = files["tskFile"][x].originalname;         
          let sPath = files["tskFile"][x].path;
          let buffer = fs.readFileSync(sPath);
          const writable = await db.bulkCreateAttachmentStream({});
          writable.on('error', e => {
            // An error occurred and the stream is closed
            console.error("Error on write ", e)
          });
          writable.on('response', response => {
            // The attachment content was written to the document and a
            // response has arrived from the server
            console.log(">> File " + sFilename + " saved to doc ")
          });
          let error;         
          // Write the image in n chunks
          let offset = 0;
          const writeRemaining = () => {
            if (error) {
              return;
            }
            let draining = true;
            while (offset < buffer.length && draining) {
              const remainingBytes = buffer.length - offset;
              let chunkSize = 16 * 1024;
              if (remainingBytes < chunkSize) {
                chunkSize = remainingBytes;
              }                            
              const chunk = new Uint8Array(
                buffer.slice(offset, offset + chunkSize),
              );
              draining = writable.write(chunk);              
              offset += chunkSize;
            }

            if (offset < buffer.length) {
              // Buffer is not draining. Write some more once it drains.              
              writable.once('drain', writeRemaining);
            } else {
              writable.end();                           
            }
          };          
          writable.file({
            unid: unid,
            fileName: sFilename,
          });
          writeRemaining();
        } // end forall attachments

Вот мои переменные notes.ini для моего сервера:

PROTON_MAX_WRITE_ATTACHMENT_MB=30, 
PROTON_MAX_ATTACHMENT_CHUNK_KB=50, 
PROTON_MIN_ATTACHMENT_CHUNK_KB=8

Моя ошибка или ошибка в AppDevPack? Кто-нибудь пробовал эту новую функцию?

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Мы нашли исправление, и оно будет включено в нашу следующую версию. Спасибо за этот отчет!

0 голосов
/ 30 сентября 2019

Я могу воспроизвести аналогичную проблему с Proton на 64-битной Windows. Я не могу воспроизвести с Proton, работающим на Linux. Я использую другой код клиента, чем вы, но я на 99% уверен, что это ошибка только для Windows в Proton. Мы обновим этот ответ, когда у нас будет больше информации. А вы можете попробовать Proton в Linux?

...