首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上传角8中的压缩文件

上传角8中的压缩文件
EN

Stack Overflow用户
提问于 2020-10-15 10:32:46
回答 1查看 1.5K关注 0票数 0

我试图在角8应用程序中实现zip文件上传功能。我需要满足的三个条件是:

代码语言:javascript
复制
1. Only allow zip files to be uploaded else throw error message
2. File size should not cross 3 MBs else throw error message
3. When I choose zip file, it should show progress bar but file should only be uploaded via REST API call when I click 'Register' button separately.

到目前为止,我实现的是:文件上传服务

代码语言:javascript
复制
postFile(fileToUpload: File, header): Observable<any> {
    const endpoint = 'your-destination-url';
    const formData: FormData = new FormData();
    formData.append('fileKey', fileToUpload, fileToUpload.name);
    if (fileToUpload.size <= 3048576)
    return this.httpClient.post(endpoint, formData, { headers: header })
      .pipe(map(data => {
        console.log(data);
        return data;
      },error => {
        console.log(error, 'reduce file size');
      })) 
    }

组件TS文件

代码语言:javascript
复制
handleFileInput(files: FileList) {
this.fileToUpload = files.item(0);
}
uploadFileToActivity() {
  this.fileUploadService.postFile(this.fileToUpload, this.headers).subscribe(data => {
    // do something, if upload success
    console.log('the file has been uploaded successfully', data);
    }, error => {
      console.log(error);
    });
}

组件

代码语言:javascript
复制
<input type="file"
 id="file" (change)="handleFileInput($event.target.files)">

请建议我如何修改,以使我的功能如所述。

EN

回答 1

Stack Overflow用户

发布于 2021-06-23 12:50:03

对于第1点和第2点,您应该在代码中添加一个验证函数,以检查文件扩展名和大小。只有当文件通过验证时,上传才有可能。此外,当验证失败时,您可能应该向用户返回某种类型的反馈。

您可以跟踪文件上载进度(并显示进度栏),向.post方法添加其他选项并侦听特定事件

代码语言:javascript
复制
return this.httpClient.post(endpoint, formData, { 
 headers: header,
 reportProgress: true, 
 observe: 'events'
}).pipe(map(event => {  
 if (event.type === HttpEventType.Response) {
  // upload complete
 }
 if (event.type === HttpEventType.UploadProgress) {    
  // the event contains information about loaded data
  // you can use event.loaded and event.total to display the progress bar
 }
})) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64369660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档