angular - 无法打开 .oft,文件已打开或没有权限
问题描述
案子:
我有一个 .oft 文件,我通过 api 提供服务。在本地打开 .oft 文件时,我可以打开它(甚至可以同时打开多次)。
但是当我在本地运行我的 Angular 前端、Spring-Boot 后端并下载文件时,我无法打开它并看到以下错误消息:
We can't open 'C:\Users\(username)\Downloads\trnMiniDataRefreshTemplate.oft'. It's possible the file is already open, or you don't have permission to open it.
To check your permissions, right-click the file folder, then click Properties.
- 我已尝试关闭 Outlook,重新打开它并尝试打开此文件,但仍然存在相同的错误。
- 我在下载前后都在记事本中打开了文件,它包含几乎相同的字符,除了像 ÿ 这样的特殊字符类型被黑色菱形的问号替换。
- 我在下载前后检查了文件的权限,它们完全一样。
- 我在下载之前已将文件复制到“下载”文件夹以尝试复制此文件,但没有问题,因此仅在下载后的文件中发生。
基于此,我认为这可能与丢失这些特殊字符有关,请问我该如何解决?
这是我的代码:
弹簧引导控制器:
@GetMapping(path = "/trnMiniDataRefreshTemplate", produces = "application/octet-stream;charset=UTF-8")
public @ResponseBody byte[] getFile() throws IOException {
InputStream in = getClass()
.getResourceAsStream("/eml/trnMiniDataRefreshTemplate.oft");
return IOUtils.toByteArray(in);
}
角服务:
public downloadTrnMail(): Observable<Blob>{
let headers = new HttpHeaders();
headers = headers.append('Accept', "application/octet-stream;charset=UTF-8");
const httpGetOptions =
{
headers: headers,
responseType: 'blob' as 'json',
};
return this.httpClient.get<Blob>(`${UtilsService.baseUrl}/refreshPlanning/trnMiniDataRefreshTemplate`, httpGetOptions);
}
订阅的 Angular 组件:
emailRefreshPlanning(){
this.refreshPlanningService.downloadTrnMail().subscribe(response => {
const blob = new Blob([response], {type: "application/octet-stream;charset=UTF-8"});
fileSaver.saveAs(blob, "trnMiniDataRefreshTemplate.oft");
});
}
fileSaver 变量来自 ngx-filesaver 库:https ://www.npmjs.com/package/ngx-filesaver
解决方案
推荐阅读
- tensorflow - Tensorflow:根据另一个张量对一个张量进行采样?
- python - 在单元测试期间硬编码 Python 解释器 exec 的替代方法
- mysql - 如何在表格上插入日期 ISO 8601?
- javascript - Puppeteer,保存网页和图像
- fido-u2f - 您如何使用 Webauthn API 实现 FIDO U2F?
- python - 具有长变量名的配对图
- python - Python - 如果未定义子对象,则使类返回对象
- md5 - 如何将两个文件夹与其文件进行比较并确保它们相同
- django - Django RQ rqworker 无限期冻结
- python - 我在 Mac 上使用 python 时遇到问题:(在没有空闲和背景的 tkinter 按钮的情况下运行程序)