Явно установите тип mimetype файлов Javascript

#javascript #postgresql #react-redux #loopbackjs #file-type

Вопрос:

Поскольку я довольно новичок в реагировании, мне нужна помощь, пожалуйста.

Я столкнулся со случаем использования, когда клиент загружает файл javascript в проект, но загрузка завершается неудачно, потому что разные браузеры видят один и тот же файл по-разному (с точки зрения типа файла).

В соответствии с руководящими принципами проекта, в базе данных разрешается сохранять только файлы «приложения/javascript». но когда пользователь загружает файл из chrome, он выдает его как «текст/javascript», и загрузка завершается неудачно.

теперь клиент хочет, чтобы мы обновили mime-тип файлов javascript, например, если на сервер придет «текст/javascript», перепишите mime-тип в «приложение/javascript» и сохраните файл.

возможно ли вообще изменить mime-тип файла JS ?

если да, то мы действительно ценим любую помощь.
Каков идеальный способ решения этой проблемы.

Файл JS, поддерживаемый в базе данных.

 [  {  "id": "aac491d22bcbb4a95deed88b738c1edc",  "mimeType": "application/javascript",  "extensions": [  "js"  ],  "mediaTypeGroupId": "21f64da1e5792c8295b964d159a14491",  "created": "2021-11-15T06:31:52.237Z",  "updated": "2021-11-15T06:31:52.237Z",  "self": "/mediatypes/aac491d22bcbb4a95deed88b738c1edc"  } ]  

клиенты хотят, чтобы мы делали так (просто пример кода, простите за идею)

 if (file.files[0].type === "text/javascript") {  const newType = file.files[0].type;  newType = "application/javascript";  console.log("yes", file.files[0].type);  }  

PS: Используется технический стек REACT, REDUX, LOOPBACK, POSTGRES.
Спасибо.

Ответ №1:

Вы можете повторно создать объект файла и переопределить тип, используя приведенный ниже метод.

 new File([file], file.name, {type: "application/javascript"});  

Для вашего примера вы можете использовать его так, вы увидите, что единственным изменением будет тип.

 if (file.files[i].type === "text/javascript") {  file.files[i] = new File(file.files[i], file.files[i].name, {  type: "application/javascript",  }); }  

Комментарии:

1. Спасибо, @anotherglitchinthematri. Я обязательно буду работать над этим. но является ли хорошей практикой изменение типа файла ?

2. @SameerHuilgolkar Я решительно выступаю против изменения типа вручную, и даже если тип «приложение/javascript», предложенный с 2006 года, «текст/javascript» все еще действителен, но это расхождение здесь не проблема, проверка пользовательского ввода. Поскольку оба типа «текст/javascript» и «приложение/javascript» допустимы, следует разрешить загрузку обоих типов mime. Вы можете использовать описанный выше обходной путь, но это не будет реальным решением проблемы, я предлагаю вам сообщить своему клиенту о разрешении обоих типов mime.

3. Спасибо @anotherglitchinthematrix, все отметили. Даже я стою на этом. Я обязательно займусь этим вопросом.