在NodeJS中更改ReadStream的文件名

时间:2018-12-29 15:31:10

标签: javascript node.js request form-data

我正在使用encodingmachine / gotenberg将Office文档转换为PDF文件(gotenberg使用unoconv): Documentation

我有以下用javascript编写的代码(使用NodeJS库请求),用于将带有本地文件的请求发送到gotenberg:

function openFile(file, fullPath) {
return new Promise((resolve, reject) => {
    const filePath = pathModule.join(fullPath, file);

    var formData = {
        files: fs.createReadStream(filePath),
      };

    request.post({url:"http://docker:3000/convert/office", formData: formData}, function(err, httpResponse, body) {
        if (err) {
           reject('Upload failed!');
        }
        else {
            resolve(body);
        }
    });
});}

当我发送给goenberg英文名称的文件时,它可以工作。

但是当我尝试发送带有特殊字符的文件名(以希伯来语编写:בדיקה。docx)时,gotenberg失败并返回错误:

  

unoconv:非零退出代码:退出状态1

这可能是因为unoconv不支持带有希伯来语文件名的文件。

是否可以在不重命名服务器上文件的情况下,将文件的ReadStream中的文件名更改为temp.docx而不是בדיקה。docx呢?

谢谢

1 个答案:

答案 0 :(得分:2)

您需要将formData对象更改为以下内容:

let formData = {
        files: {
            value: fs.createReadStream(filePath),
            options: {
                filename: 'test.docx'
            }
        }
      };

为我解决了这个问题:)