File upload HCL Domino AppDevPack-写附件

File upload HCL Domino AppDevPack-写附件,file-upload,lotus-domino,hcl,domino-appdev-pack,File Upload,Lotus Domino,Hcl,Domino Appdev Pack,新的V1.0.2具有将附件上载到domino文档的新功能。我的上传代码是成功的,只要我使用文件我就能在64位Windows上重现质子的类似问题。我无法在Linux上运行Proton进行复制。我使用的客户端代码与您不同,但我99%确定这是Proton中仅限Windows的错误。我们将在获得更多信息后更新此答案。同时,您能在Linux上试用质子吗?我们找到了一个修复程序,它将包含在我们的下一篇文章中。谢谢你的报道 我会调查这个问题,这可能是质子的问题。对于Domino/Proton,您使用什么操作系

新的V1.0.2具有将附件上载到domino文档的新功能。我的上传代码是成功的,只要我使用文件我就能在64位Windows上重现质子的类似问题。我无法在Linux上运行Proton进行复制。我使用的客户端代码与您不同,但我99%确定这是Proton中仅限Windows的错误。我们将在获得更多信息后更新此答案。同时,您能在Linux上试用质子吗?

我们找到了一个修复程序,它将包含在我们的下一篇文章中。谢谢你的报道

我会调查这个问题,这可能是质子的问题。对于Domino/Proton,您使用什么操作系统?这可能会帮助我们重现这个问题。我使用的是一个Windows系统和IBM Domino(r)服务器(64位),版本10.0.1FP3,非常感谢。我们为Proton安装了Linux,但目前尚未更新到AppDevPack 1.0.2。下周我必须问我的管理员是否有可能进行更新-Linux并不是我真正的世界…我今天在Linux上试用了它,代码是一样的:它可以工作!Linux上质子没有文档损坏。。。所以我等待windows的修复;-)
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

PROTON_MAX_WRITE_ATTACHMENT_MB=30, 
PROTON_MAX_ATTACHMENT_CHUNK_KB=50, 
PROTON_MIN_ATTACHMENT_CHUNK_KB=8