File upload Angular 7正确上传doc/docx文件

File upload Angular 7正确上传doc/docx文件,file-upload,angular7,angular-input,File Upload,Angular7,Angular Input,我上传doc和docx文件时遇到问题,因为在将其转换为base64时无法获得正确的文件类型。这是我的意见: <input accept=".pdf,.txt,.doc,.docx" type="file" (change)="onNativeInputFileSelect($event)" #inputFile hidden /> 然后在“uploadFile”中,我将文件作

我上传doc和docx文件时遇到问题,因为在将其转换为base64时无法获得正确的文件类型。这是我的意见:

  <input
    accept=".pdf,.txt,.doc,.docx"
    type="file"
    (change)="onNativeInputFileSelect($event)"
    #inputFile
    hidden
  />
然后在“uploadFile”中,我将文件作为base 64字符串发送到服务器。
changeFile
方法如下:

  changeFile(file) {
    return new Promise((resolve, reject) => {
      const reader = new FileReader();
      reader.readAsDataURL(file);
      reader.onload = () => resolve(reader.result);
      reader.onerror = (error) => reject(error);
    });
  }
这适用于pdf或txt文件,但当我上载.doc或.docx文件时,会得到以下base64字符串:

data:application/octet-stream;base64,0M8R4KGxGuEAA[...]
对于pdf,我有:

data:application/pdf;base64,JVBERi0xLjQKJeLjz9MKMS
这意味着当我试图下载文件时,我没有得到正确的类型,因为我有application/octet-stream,所以我无法为文件添加正确的扩展名。
我尝试通过传递到输入组件的
accept
属性:

application/msword,application/pdf,text/plain,application/vnd.openxmlformats-officedocument.wordprocessingml.document
但是没有任何改变,窗口的文件选择器只建议我使用.pdf和.txt文件

编辑


我得到“数据:应用程序/vnd.openxmlformats of cedocument.wordprocessingml.document;base64,UEsDBB[…]”用于docx,而“数据:应用程序/msword;base64,0M8R4KGxGuv[…]”用于doc文件。

这在我的mac上运行良好。“CONTENUTO data:application/vnd.openxmlformats officedocument.wordprocessingml.document;base64,UEsDBB…”在我共享的stackblitz上?是的,我从日志中复制了它们
application/msword,application/pdf,text/plain,application/vnd.openxmlformats-officedocument.wordprocessingml.document