我在上传 doc 和 docx 文件时遇到问题,因为在将其转换为 base64 时无法获得正确的文件类型。这是我的输入:
<input
accept=".pdf,.txt,.doc,.docx"
type="file"
(change)="onNativeInputFileSelect($event)"
#inputFile
hidden
/>
在我的方法中,我这样做:
onNativeInputFileSelect(event) {
if (event.target.value) {
const file: File = event.target.files[0];
this.changeFile(file).then((base64: string): any => {
this.attachment.content= base64;
this.uploadFile(this.attachment);
});
}
}
然后在“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
但没有任何改变,Window 的文件选择器只建议我 .pdf 和 .txt 文件
编辑