显式设置 Javascript 文件 mimetype

Explicitly set Javascript files mimetype


由于我是 React 的新手,需要帮助。

我遇到过一个用例,客户端在项目中上传了一个javascript文件,但是上传失败,因为不同的浏览器以不同的方式(在文件类型方面)看到同一个文件。

根据项目指南,数据库中只允许保存 'application/javascript' 个文件。但是当用户从 chrome 上传文件时,它显示为 'text/javascript' 并且上传失败。

现在客户端要我们更新javascript个文件的mime-type,例如,如果'text/javascript'来到服务器,重写mime-type为'application/javascript'并保存文件。

是否可以更改 JS 文件的 mime 类型?

如果是,非常感谢任何帮助。
解决这个问题的理想方法是什么。

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。
谢谢。

您可以重新创建文件对象并使用以下方法覆盖类型。

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",
    });
}