gpt4 book ai didi

javascript - 我如何在 Angular 4 中像 Firefox 一样使用 chrome 选择相同的文件

转载 作者:行者123 更新时间:2023-12-03 02:39:41 24 4
gpt4 key购买 nike

我有一个编辑器,我可以在其中添加多个文件,即使它们是相同的(重复)。

就我而言,当我从 Firefox 选择文件时,它将被添加到编辑器中。!第二次,当我重新选择同一文件时,它再次正确添加到编辑器中。! (工作良好)

但是

当我第一次使用谷歌浏览器时,它工作正常,但是第二次,它没有获取相同的文件,因为之前已经选择了相同的文件,所以它没有获取(当我取消并添加相同的文件时,它已添加)

我的 HTML 是这样的:

<input type="file"name="addFiles" multiple>

我看过一篇文章,说当我使用多个时它会被重置,但事实并非如此。!

无论如何,通过使用以下 jquery 代码,我得到了我想要的(在编辑器中添加文件后,我将 val t 设置为空。!

jQuery('input[type=file]').val('');

我正在使用 Angular 4 我不想使用 jquery,我该怎么做?

最佳答案

在 Angular 4 中上传文件

在 my-fileupload.component.ts 文件中

import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { FormGroup, FormControl, FormBuilder} from '@angular/forms';

import { SendToService } './_service/service';

@Component({
selector: 'app-my-fileupload',
templateUrl: './app-my-fileupload.component.html',
styleUrls: ['./app-my-fileupload.component.scss'],
providers: [
SendToService
]
})

export class MyFileuploadComponent implements OnInit {

@ViewChild('fileInput') fileInput: ElementRef;

public MyForm : FormGroup;

public Files = new FormControl();


constructor(private fb: FormBuilder, private sendToService:
SendToService){}

ngOnInit() {
this.MyForm = this.fb.group({
Files: this.Files,
});
}

onFileChange(event) {
if (event.target.files.length > 0) {
this.filesToUpload = <Array<File>>event.target.files; // FILE

let size = 5 * 1024 * 1024; // 5MB
for (let i = 0; i < this.filesToUpload.length; i++) {
if (this.filesToUpload.size > 5000000) {
// Message for file size
} else {
this.MyForm.get('Files').setValue(this.filesToUpload);
}
}
}
}
onSubmit(){
const formObj = this.UploadFile.getRawValue();
this.sendToService.UploadFile(formObj).subscribe(response => {
console.log(response) // response = success
if (response == success) {
this.MyForm.reset();
}
}
}
}

在 send-to-service.service.ts 文件中

import { Injectable, OnInit } from '@angular/core';
import { Http, Headers, RequestOptions, Response } from '@angular/http';

@Injectable()
export class SendToService {

Url_app = 'url';

constructor(private _http: Http) { }

UploadFile(formObj: any) {

let formData = new FormData();

for (let i = 0; i < formObj.length; i++) {
formData.append('Files[]', formObj[i], formObj[i]['name']);
}

return this._http.post( Url_app , formData);
}
}

在 my-fileupload.component.html 文件中

<input id="Files" type="file" #filesInput (change)="onFileChange($event)" 
[multiple]="true" />

如果您不想这样做

使用此方法

@ViewChild('fileInput') fileInput: ElementRef;

this.filesInput.nativeElement.value = ""

我们使用 ViewChild 和 ElementRef 来访问输入

关于javascript - 我如何在 Angular 4 中像 Firefox 一样使用 chrome 选择相同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48381529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com