在NodeJS中更改ReadStream的文件名

4

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

以下是我使用NodeJS库request编写的javascript代码,用于向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);
        }
    });
});}

当我发送一个英文文件名的文件到Gotenberg时,它可以正常工作。但是当我尝试发送一个包含特殊字符的文件名(用希伯来语写成: בדיקה.docx)时,Gotenberg会失败并返回一个错误: unoconv: 非零退出代码:退出状态1
这可能是因为unoconv不支持带有希伯来语文件名的文件。是否有办法在文件的ReadStream中将文件名更改为类似于temp.docx而不是在我的服务器上重命名文件?
谢谢
2个回答

2

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

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

这个问题对我来说解决了 :)

1

const FormData = require('form-data'); const form = new FormData();

使用上述代码,您可以轻松地将文件上传到服务器。在这里,您需要注意的是,您可以通过添加 {filename: 'newname'} 来更改上传文件的名称。


1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接