【问题标题】:Angular - How to check if file exists without fsAngular - 如何在没有 fs 的情况下检查文件是否存在
【发布时间】:2019-04-06 16:39:18
【问题描述】:

作为fsseems not to work anymore since Angular 6 我还没有找到检查文件是否存在的替代方法。 在我的特殊情况下,我必须检查资产文件夹中是否存在特定的图像文件,例如像这样:

if (fileExists('path')) { doSomething(); }

我尝试安装file-exists package,但这使用了

const fs = require('fs')
const path = require('path')

Angular 7 显然不支持。

有人可以帮忙吗?非常感谢。

【问题讨论】:

  • 你可能会向文件发出 GET 请求?!

标签: typescript fs angular7


【解决方案1】:

谢谢你,铲屎官。是的,这就是我现在管理它的方式。但我希望有一个更简单的单行函数来检查这一点。

这里是代码(它返回文件夹,而不是文件,所以我可以将它用于更多目的):

getFolder(subFolder: string): Observable<string> {
    const folderPath = `assets/folder/${subFolder.toLocaleUpperCase()}`;
    return this.httpClient
      .get(`${folderPath}/file.png`, { observe: 'response', responseType: 'blob' })
      .pipe(
        map(response => {
          return folderPath;
        }),
        catchError(error => {
          return of('assets/folder/default');
        })
      );
  }

【讨论】:

    【解决方案2】:

    这是一个 sn-p,它返回一个布尔值 Observable,用于判断文件是否存在于给定的 URL:

    fileExists(url: string): Observable<boolean> {
        return this.httpClient.get(url)
            .pipe(
                map(response => {
                    return true;
                }),
                catchError(error => {
                    return of(false);
                })
            );
    }
    

    或者,同样的事情,但采用更简洁的单行格式:

    public fileExists(url: string): Observable<boolean> {
        return this.httpClient.get(url).pipe(map(() => true), catchError(() => of(false)));
    }
    

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 1970-01-01
      • 2016-11-14
      • 2019-07-26
      • 1970-01-01
      • 2013-04-12
      • 2018-09-22
      • 1970-01-01
      • 2018-02-13
      相关资源
      最近更新 更多