javascript - 在 NodeJS 中更改 ReadStream 的文件名

标签 javascript node.js request form-data

我正在使用 thecodingmachine/gotenberg 将办公文档转换为 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);
        }
    });
});}

当我向 gotenberg 发送一个英文名称的文件时,它有效。

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

unoconv: non-zero exit code: exit status 1

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

有什么方法可以在不重命名我服务器上的文件的情况下,将文件的 ReadStream 中的文件名即时更改为 temp.docx 而不是 בדיקה.docx 之类的名称?

谢谢

最佳答案

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

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

为我解决了这个问题:)

关于javascript - 在 NodeJS 中更改 ReadStream 的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53970855/

相关文章:

request - 在运行时检查浏览器是否支持 data uri

javascript - jQuery,形式上的变量数学

javascript - Jquery Tokeninput 和动态嵌套表单

node.js - 使用 Node 串行读取串行端口

javascript - 如何打破 promise 中的循环?

node.js - 如何将自定义 AWS 开发工具包与 Node.js 结合使用?

javascript - 使用 pdfobject 将 pdf 放入模态 Bootstrap 中 - 递增文件

javascript - 缩短 CSS 过渡?

iphone - 使用 Fiddler 捕获传入 iPhone 的流量

xml - @Scope ( INTERFACES ) 相当于 XML