From d4f4d85492040a8ac5dbecfa0afff6af5e3d2322 Mon Sep 17 00:00:00 2001
From: Timothy Carambat <rambat1010@gmail.com>
Date: Tue, 12 Dec 2023 16:07:23 -0800
Subject: [PATCH] patch: fix non-latin filenames being encoded improperly
 during upload and chat (#432)

patch: fix non-latin filenames being messed up during upload and chat
connect #169
resolves #427
---
 server/utils/files/multer.js | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/server/utils/files/multer.js b/server/utils/files/multer.js
index 9c2967e01..b0a595b7b 100644
--- a/server/utils/files/multer.js
+++ b/server/utils/files/multer.js
@@ -6,7 +6,7 @@ const { v4 } = require("uuid");
 function setupMulter() {
   // Handle File uploads for auto-uploading.
   const storage = multer.diskStorage({
-    destination: function (_, _, cb) {
+    destination: function (_, __, cb) {
       const uploadOutput =
         process.env.NODE_ENV === "development"
           ? path.resolve(__dirname, `../../../collector/hotdir`)
@@ -14,6 +14,9 @@ function setupMulter() {
       cb(null, uploadOutput);
     },
     filename: function (_, file, cb) {
+      file.originalname = Buffer.from(file.originalname, "latin1").toString(
+        "utf8"
+      );
       cb(null, file.originalname);
     },
   });
@@ -24,7 +27,7 @@ function setupMulter() {
 function setupDataImports() {
   // Handle File uploads for auto-uploading.
   const storage = multer.diskStorage({
-    destination: function (_, _, cb) {
+    destination: function (_, __, cb) {
       const uploadOutput = path.resolve(__dirname, `../../storage/imports`);
       fs.mkdirSync(uploadOutput, { recursive: true });
       return cb(null, uploadOutput);
@@ -40,7 +43,7 @@ function setupDataImports() {
 function setupLogoUploads() {
   // Handle Logo uploads.
   const storage = multer.diskStorage({
-    destination: function (_, _, cb) {
+    destination: function (_, __, cb) {
       const uploadOutput =
         process.env.NODE_ENV === "development"
           ? path.resolve(__dirname, `../../storage/assets`)
@@ -49,6 +52,9 @@ function setupLogoUploads() {
       return cb(null, uploadOutput);
     },
     filename: function (_, file, cb) {
+      file.originalname = Buffer.from(file.originalname, "latin1").toString(
+        "utf8"
+      );
       cb(null, file.originalname);
     },
   });
@@ -58,7 +64,7 @@ function setupLogoUploads() {
 
 function setupPfpUploads() {
   const storage = multer.diskStorage({
-    destination: function (_, _, cb) {
+    destination: function (_, __, cb) {
       const uploadOutput =
         process.env.NODE_ENV === "development"
           ? path.resolve(__dirname, `../../storage/assets/pfp`)
-- 
GitLab