1
私はこのようなファイルのダウンロードを提供するためにExpressを使用しています:を使用する特殊文字(ウムラウト)エクスプレス応答で
const fileStream = Storage.getFileStream(path);
res.setHeader('Content-disposition', `attachment; filename="${filename}"`);
res.setHeader('Content-type', contentType);
res.setHeader('Content-length', size);
fileStream.pipe(res);
filename
は、特殊文字(A、U、E、...)エラーが含まれている場合私は許可されていない文字を使用していると言って投げられます。
unidecodeを使用して解決策が見つかりました。しかし、それを "A"に変換する代わりに "Ä"を保持する解決策があります
私はこの問題を検索しますが、これを正しく処理する方法は非常に混乱しています。 (後で追加)...
ソリューション:私は私のために動作し、ファイル名にすべての特殊文字を保持し、この解決策を見つけた:
const filename = encodeURI(file.filename);
res.setHeader('Content-disposition', `attachment; filename*=UTF-8''${filename}; filename=${filename}`);
res.setHeader('Content-type', contentType);
res.setHeader('Content-length', size);