#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, все отметили. Даже я стою на этом. Я обязательно займусь этим вопросом.