File upload Angular 7正确上传doc/docx文件
我上传doc和docx文件时遇到问题,因为在将其转换为base64时无法获得正确的文件类型。这是我的意见: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”中,我将文件作
<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