当前位置: 首页 > 知识库问答 >
问题:

文件格式对称性验证

田柏
2023-03-14

我有一个案例,我有3个单独的文件上传单个输入。如果用户选择了图像格式文件(png、jpg、jpeg),那么他/她必须需要选择图像格式的所有三个文件输入(png、jpg、jpeg)。

如果用户选择了pdf文件,那么他/她必须只需要上传pdf格式的文件。

因此,任何用户都可以上传所有图像(png、jpg、jpeg)或PDF,但不能同时上传两者。我用过

.replace(/^.*\./, "").toLowerCase();

rejex获取文件的文件扩展名,然后我正在使用许多如果其他条件来验证它,但它仍然无法正常工作。

//html

  <ng-container>
            <span>
        <label class="label1">
            <div>
                <span>
                    <img class="image1 " src="assets/images/upload.png " alt="img " width="30 " height="30 " />
                </span>
            <span style="cursor:pointer;">{{salary1}}</span>
            <span>
                    <input type="file" (change)="selectFileS1($event) " accept=".jpg, .jpeg, .png, .pdf ">
                </span>
            </div>
            </label>
            </span>
            <span>
        <label class="label1">
            <img class="image2 " src="assets/images/upload.png " alt="img " width="30 " height="30 " />

            <span style="cursor:pointer;">{{salary2}}</span>
            <input type="file" (change)="selectFileS2($event) " accept=".jpg, .jpeg, .png, .pdf ">
            </label>
            </span>
            <span>
        <label class="label1 ">
            <img class="image3 " src="assets/images/upload.png " alt="img " width="30 " height="30 " />
            <span style="cursor:pointer;">{{salary3}}</span>
            <input type="file" (change)="selectFileS3($event) " accept=".jpg, .jpeg, .png, .pdf ">
            </label>
            </span>
            <br>
        </ng-container>

//ts

selectMonth1 = [];
selectMonth2 = [];
selectMonth3 = [];
salary1  = 'Month / Combined';
salary2  = 'Month2';
salary3  = 'Month3';


 selectFileS1(event) {
    this.selectMonth1 = Array.from(event.target.files);
    console.log(this.selectMonth1);

   if(!this.validationMethod()) {
  this.salary1 = this.selectMonth1[0].name;
}

  }

 selectFileS2(event) {
    this.selectMonth2 = Array.from(event.target.files);
   if(!this.validationMethod()) {
 this.salary2 = this.selectMonth2[0].name;
}

}

selectFileS3(event) {
    this.selectMonth3 = Array.from(event.target.files);
 if(!this.validationMethod()) {
   this.salary3 = this.selectMonth3[0].name;
}

}


  validationMethod() {
    if(this.selectMonth1[0].name !==this.selectMonth2[0].name ||this.selectMonth2[0].name!==this.selectMonth3[0].name || this.selectMonth1[0].name !==this.selectMonth3[0].name) {
        const fileExtensionOfMonth1 = this.selectMonth1[0].name
          .replace(/^.*\./, "")
          .toLowerCase();
        console.log(fileExtensionOfMonth1);
        const fileExtensionOfMonth2 = this.selectMonth2[0].name
          .replace(/^.*\./, "")
          .toLowerCase();
        console.log(fileExtensionOfMonth2);
        const fileExtensionOfMonth3 = this.selectMonth3[0].name
          .replace(/^.*\./, "")
          .toLowerCase();
        console.log(fileExtensionOfMonth3);
        if (
          fileExtensionOfMonth1 === "png" ||
          fileExtensionOfMonth1 === "jpg" ||
          (fileExtensionOfMonth1 === "jpeg" &&
            fileExtensionOfMonth2 === "png") ||
          fileExtensionOfMonth2 === "jpg" ||
          fileExtensionOfMonth2 === "jpeg"
        ) {
          if (fileExtensionOfMonth3 === "pdf") {
            this.selectMonth1.length = 0;
            this.selectMonth2.length = 0;
            this.selectMonth3.length = 0;
           this.toastr.info("","You can either upload images or pdfs but not a combination");
           return false;
          }
        } else if (
          fileExtensionOfMonth1 === "png" ||
          fileExtensionOfMonth1 === "jpg" ||
          (fileExtensionOfMonth1 === "jpeg" &&
            fileExtensionOfMonth3 === "png") ||
          fileExtensionOfMonth3 === "jpg" ||
          fileExtensionOfMonth3 === "jpeg"
        ) {
          if (fileExtensionOfMonth2 === "pdf") {
            this.selectMonth1.length = 0;
            this.selectMonth2.length = 0;
            this.selectMonth3.length = 0;
           this.toastr.info("","You can either upload images or pdfs but not a combination");
            return false;
          }
        } else if (
          fileExtensionOfMonth2 === "png" ||
          fileExtensionOfMonth2 === "jpg" ||
          (fileExtensionOfMonth2 === "jpeg" &&
            fileExtensionOfMonth3 === "png") ||
          fileExtensionOfMonth3 === "jpg" ||
          fileExtensionOfMonth3 === "jpeg"
        ) {
          if (fileExtensionOfMonth1 === "pdf") {
            this.selectMonth1.length = 0;
            this.selectMonth2.length = 0;
            this.selectMonth3.length = 0;
           this.toastr.info("","You can either upload images or pdfs but not a combination");
          }
           return false;
        } else if (fileExtensionOfMonth1 === "pdf") {
          if (
            fileExtensionOfMonth2 === "png" ||
            fileExtensionOfMonth2 === "jpg" ||
            (fileExtensionOfMonth2 === "jpeg" &&
              fileExtensionOfMonth3 === "png") ||
            fileExtensionOfMonth3 === "jpg" ||
            fileExtensionOfMonth3 === "jpeg"
          ) {
            this.selectMonth1.length = 0;
            this.selectMonth2.length = 0;
            this.selectMonth3.length = 0;
           this.toastr.info("","You can either upload images or pdfs but not a combination");
            return false;
          }
        } else if (fileExtensionOfMonth2 === "pdf") {
          if (
            fileExtensionOfMonth1 === "png" ||
            fileExtensionOfMonth1 === "jpg" ||
            (fileExtensionOfMonth1 === "jpeg" &&
              fileExtensionOfMonth3 === "png") ||
            fileExtensionOfMonth3 === "jpg" ||
            fileExtensionOfMonth3 === "jpeg"
          ) {
            this.selectMonth1.length = 0;
            this.selectMonth2.length = 0;
            this.selectMonth3.length = 0;
           this.toastr.info("","You can either upload images or pdfs but not a combination");
            return false;
          }
        } else if (fileExtensionOfMonth3 === "pdf") {
          if (
            fileExtensionOfMonth1 === "png" ||
            fileExtensionOfMonth1 === "jpg" ||
            (fileExtensionOfMonth1 === "jpeg" &&
              fileExtensionOfMonth2 === "png") ||
            fileExtensionOfMonth2 === "jpg" ||
            fileExtensionOfMonth2 === "jpeg"
          ) {
            this.selectMonth1.length = 0;
            this.selectMonth2.length = 0;
            this.selectMonth3.length = 0;
           this.toastr.info("","You can either upload images or pdfs but not a combination");
          }
           return false;
        }

    }

      }
                                                            }

共有1个答案

岳泳
2023-03-14

让它变得简单。

<input type="file" (change)="selectFile($event)" [accept]="allowedExtensions">
export class MyComponent {
  allowedExtensions = 'image/*, application/pdf';

  extensions = {
    images: ['jpeg', 'jpg', 'png'], //etc
  };

  constructor(...) {}

  selectFile(event: Event) {
    const input = event.target as HTMLInputElement;
    const FL = input.files;
    const file = FL[0];
    this.setExtensions(file.name.split('.').slice(-1));
    // ... Your factorized logic
  }

  setExtensions(extension: string) {
    if (this.extensions.images.includes(extension)) { this.allowedExtensions = this.extensions.map(ext => `.${ext}`).join(','); }
    else if (extension === 'pdf') { this.allowedExtensions = 'application/pdf' }
    else { this.allowedExtensions = 'image/*, application/pdf'; }
  }
}

这当然可以完善,但这给了你一个要做什么的总体想法。

 类似资料:
  • 问题内容: 验证.txt文件是否为的最佳方法是: 实际上,.txt文件而不是仅具有扩展名的其他类型的文件已更改。 .txt文件的格式与指定的格式匹配(因此可以正确解析,包含所有相关信息,等等)。 这一切都是在Java中完成的,在Java中将检索文件,然后需要对其进行检查以确保它是应该的。到目前为止,我仅发现JHOVE(现在称为JHOVE2)作为完成此任务的工具,但是在通过Java代码而不是通过命令

  • V2Ray 的配置文件形式如下,客户端和服务器通用一种形式,只是实际的配置不一样。 { "log": {}, "api": {}, "dns": {}, "stats": {}, "routing": {}, "policy": {}, "reverse": {}, "inbounds": [], "outbounds": [], "transport":

  • 我需要考虑如何将我的数据写入Hadoop。 我正在使用Spark,我从Kafka主题中得到了一条消息,每条消息都在JSON记录中。 我每天大约有200B张唱片。 有什么建议吗?

  • 每个扩展都有一个 JSON 格式的 manifest 文件,名为 manifest.json,来提供重要信息。 字段摘要 以下代码显示了扩展支持的 manifest 字段,以及指向讨论每个字段的页面的链接 (查看链接:manifest)。 { // Required "manifest_version": 2, "name": "My Extension", "version":

  • 文件格式     图片加载性能取决于加载大图的时间和解压小图时间的权衡。很多苹果的文档都说PNG是iOS所有图片加载的最好格式。但这是极度误导的过时信息了。     PNG图片使用的无损压缩算法可以比使用JPEG的图片做到更快地解压,但是由于闪存访问的原因,这些加载的时间并没有什么区别。     清单14.6展示了标准的应用程序加载不同尺寸图片所需要时间的一些代码。为了保证实验的准确性,我们会测量

  • ELF (Executable and Linkable Format)是一种为可执行文件,目标文件,共享链接库和内核转储(core dumps)准备的标准文件格式。 Linux和很多类Unix操作系统都使用这个格式。 让我们来看一下64位ELF文件格式的结构以及内核源码中有关于它的一些定义。 一个ELF文件由以下三部分组成: ELF头(ELF header) - 描述文件的主要特性:类型,CPU