0

我正在尝试将 docx 文件转换为 pdf,同时使用 nodejs 中的 cloudconvert api 在 s3 空间上上传。当我运行我的代码时,它正在上传 docx 文件,但没有发生转换,也没有给出任何错误。我不明白我做错了什么。下面是我的代码。

app.post('/upload/file', upload.single('file'), (req, res) => {
    cloudconvert.createProcess(
            { inputformat: 'docx', outputformat: 'pdf' },
            (err, process) => {
              if (err) {
                console.error(`CloudConvert Process creation failed: ${err}`)
              } else {
                process.start({
                  input: {
                    s3: {
                      accesskeyid: SPACES_ACCESS_KEY_ID,
                      secretaccesskey: SPACES_SECRET_ACCESS_KEY,
                      bucket: 'files'
                    } 
                  },
                  file: req.file.key,
                  outputformat: 'pdf',
                  output: {
                    s3: {
                      accesskeyid: SPACES_ACCESS_KEY_ID,
                      secretaccesskey: SPACES_SECRET_ACCESS_KEY,
                      bucket: 'files'
                    }
                  }
                }, (err, process) => {
                  if(err) return console.log(err.message)

                  console.log('process', process)
                })
              }
            }
          )
     })

我正在使用 multer 来处理多部分表单数据。当我尝试运行代码时,它没有显示任何错误,也没有将文件转换为 pdf。请让我知道我做错了什么。谢谢你。

4

1 回答 1

0

嗨,我遇到了同样的问题,我不是专家,但是您可以做些什么来解决这个问题,就是将此代码放入一个 Promise 中,因此您将等到转换过程完成,在这里您可以找到一个示例

inputformat 是文件的扩展名 outputformat 您想要的扩展名 params 处理和保存文件所需的参数

 return new Promise((resolve, reject) => {
    response = cloudconvert.createProcess({inputformat: inputformat,
                                           outputformat: outputformat},
               function(error, process){
                 process.start(params, function(error, process) {
                   if (error){
                     reject({"status": "error" , "message": error})
                   } else {
                     process.wait(function(error, process){
                       if (error){
                         reject({status: "error", "error": error})
                       } else {
                         console.log(process.data.message)
                         resolve({"status": "ok" , 
                                  "message": "process complete"})
                       }
                     });
                   }
               });
           });
      });

希望这对您有所帮助,这个想法是您可以确保您获得并完成转换过程

于 2019-07-15T21:24:16.407 回答