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

在Angular中上传文件?

公孙宏远
2023-03-14

我知道这是一个非常普遍的问题,但我无法在Angular 2中上传文件。我试过了

1) http://valor-software.com/ng2-file-upload/和

2) http://ng2-uploader.com/home

...但是失败了。有人用Angular上传过文件吗?你用了什么方法?如何做到这一点?如果提供任何示例代码或演示链接,我们将不胜感激。

共有3个答案

师野
2023-03-14

感谢@Eswar。这个代码对我来说非常有效。我想在解决方案中添加某些内容:

我得到错误:java.io.IOExcture: RESTEASY007550:无法获得多部分的边界

为了解决此错误,您应该删除“内容类型”“多部分/表单数据”。它解决了我的问题。

别子实
2023-03-14

根据上面的答案,我用Angular 5. x构建了这个

只需调用uploadFile(url,file)。subscribe()以触发上载

import { Injectable } from '@angular/core';
import {HttpClient, HttpParams, HttpRequest, HttpEvent} from '@angular/common/http';
import {Observable} from "rxjs";

@Injectable()
export class UploadService {

  constructor(private http: HttpClient) { }

  // file from event.target.files[0]
  uploadFile(url: string, file: File): Observable<HttpEvent<any>> {

    let formData = new FormData();
    formData.append('upload', file);

    let params = new HttpParams();

    const options = {
      params: params,
      reportProgress: true,
    };

    const req = new HttpRequest('POST', url, formData, options);
    return this.http.request(req);
  }
}

在组件中这样使用它

  // At the drag drop area
  // (drop)="onDropFile($event)"
  onDropFile(event: DragEvent) {
    event.preventDefault();
    this.uploadFile(event.dataTransfer.files);
  }

  // At the drag drop area
  // (dragover)="onDragOverFile($event)"
  onDragOverFile(event) {
    event.stopPropagation();
    event.preventDefault();
  }

  // At the file input element
  // (change)="selectFile($event)"
  selectFile(event) {
    this.uploadFile(event.target.files);
  }

  uploadFile(files: FileList) {
    if (files.length == 0) {
      console.log("No file selected!");
      return

    }
    let file: File = files[0];

    this.upload.uploadFile(this.appCfg.baseUrl + "/api/flash/upload", file)
      .subscribe(
        event => {
          if (event.type == HttpEventType.UploadProgress) {
            const percentDone = Math.round(100 * event.loaded / event.total);
            console.log(`File is ${percentDone}% loaded.`);
          } else if (event instanceof HttpResponse) {
            console.log('File is completely loaded!');
          }
        },
        (err) => {
          console.log("Upload Error:", err);
        }, () => {
          console.log("Upload done");
        }
      )
  }
百里文景
2023-03-14

角2为上传文件提供了很好的支持。不需要第三方库。

<input type="file" (change)="fileChange($event)" placeholder="Upload file" accept=".pdf,.doc,.docx">
fileChange(event) {
    let fileList: FileList = event.target.files;
    if(fileList.length > 0) {
        let file: File = fileList[0];
        let formData:FormData = new FormData();
        formData.append('uploadFile', file, file.name);
        let headers = new Headers();
        /** In Angular 5, including the header Content-Type can invalidate your request */
        headers.append('Content-Type', 'multipart/form-data');
        headers.append('Accept', 'application/json');
        let options = new RequestOptions({ headers: headers });
        this.http.post(`${this.apiEndPoint}`, formData, options)
            .map(res => res.json())
            .catch(error => Observable.throw(error))
            .subscribe(
                data => console.log('success'),
                error => console.log(error)
            )
    }
}

使用@角/核":"~2.0.0"和@角/超文本传输协议:"~2.0.0"

 类似资料:
  • 本文向大家介绍Angular Js文件上传之form-data,包括了Angular Js文件上传之form-data的使用技巧和注意事项,需要的朋友参考一下 前言:很久没更新博客,最近公司pc端技术选型用angular,这几天就赶鸭子上架,硬着头皮直接上手angular。其中有许多小坑陆陆续续踩起走。今天就遇到一个比较常见的问题:图片上传。 主题:图片上传服务器,然后通过服务器传阿里云。 不废话

  • 我尝试使用以下方法从用户加载一个JSON文件:

  • 我试图创建一个页面,用户可以张贴图像及其细节。现在,当我测试来自postman的spring boot服务时,我能够成功地在服务中获取文件。当我试图从angular5中做同样的事情时,多部分文件在服务中没有被识别,并且总是得到空数组。 我的角服务代码如下 } 我已经尝试添加标头,如multipart/form-data,并将其设置为un定义。无论哪种方式,我都收到了错误。在发布到这里之前,我已经广

  • 本文向大家介绍Angular angular-file-upload文件上传的示例代码,包括了Angular angular-file-upload文件上传的示例代码的使用技巧和注意事项,需要的朋友参考一下 问题描述 附件上传 检定结果以附件形式上传。 这里先不考虑api。 实现的任务就是,点击选择文件,选择之后可以清楚掉该文件。 插件介绍 用到了项目映入过的一个插件,angular-file-u

  • 我需要使用Angular2上传文件,我在客户端使用它,在服务器端使用WebAPI。如何使用此组合来实现

  • 我需要上传文件使用Spring引导和角,所以这是控制器代码,很好地工作使用邮差 -component.ts代码: -HTML代码: 出现此错误