簡體   English   中英

在 NodeJS 中更改 ReadStream 的文件名

[英]Changing filename of a ReadStream in NodeJS

我正在使用 thecodingmachine/gotenberg 將辦公文檔轉換為 PDF 文件(gotenberg 正在使用 unoconv):文檔

我有以下用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:非零退出代碼:退出狀態 1

這可能是因為 unoconv 不支持具有希伯來文文件名的文件。

有什么方法可以將文件的 ReadStream 中的文件名更改為類似 temp.docx 而不是 בדיקה.docx 之類的東西,而無需在我的服務器上重命名文件?

謝謝

您需要將 formData 對象更改為以下內容:

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

為我解決了這個問題:)

const FormData = require('form-data'); 常量形式 = 新的 FormData();

form.append('file', fs.createReadStream(filepath), {filename: 'newname'} );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM