Angular 2格式数据为空

标签 angular form-data

我无法将数据传递给 FormData。我搜索过。但我无法理解。请你帮助我好吗。 我的目标;使用 web API 2 保存图像文件。我还没有写更多的 wep api 2。

我找不到解决方案。还有其他使用方法吗?

我的组件

let fp = new fileUploadParametre();
let formData: FormData = new FormData();
var file; 

if ($('#fileinput')[0] != undefined) {
  if ($('#fileinput')[0].files.length > 0) {
    file = $('#fileinput')[0].files[0];
    formData.append('uploadingFile', file);
    //fp.fileName = file.name;
    console.log(formData);
  }
  formData.append('siparisid', this.siparis.siparisid);
  formData.append('dokumantipi',this.form.controls.belgeTipiFormController.value);
  formData.append('aciklama',this.form.controls.aciklamaFormController.value);

  this.fileUploadService.kaydet(
    formData
  )
    .subscribe(result => {
      console.log(result);
      if (result === true) {
        this.errorMessages = [];
        this.dialogRef.close(true)
      }
      else
        this.errorMessages = ['Kayıt Yapılamadı'];
    },
    err => {
      if (err.status == 0) {
        this.errorMessages = ['Bağlantı hatası! sunucuya erişilemedi.'];
      }
      else if (err.status == 404) {
        this.errorMessages = ['Bağlantı hatası! sunucuya erişilemedi.'];
      }
      else if (err.status == 401) {
        this.errorMessages = ['Yetki Hatası.'];
      }


      else if (err.status == 400) {
        let errBody = JSON.parse(err._body);
        if (errBody
          && errBody['error'] == 'invalid_grant')
          this.errorMessages = ['Oturum Açılamadı Geçersiz Kullanıcı veya Şifre'];
        else
          this.errorMessages = [errBody.message];
      }
      else
        this.errorMessages = [err.statusTest]

    }
    );
}


 **my Service**

 public kaydet(
  formData: FormData
 ): Observable<any> {

let postFiles = {
  formData: formData
};

return this.http.post(
  this.apiUrl + '/dokumanlar/ResimKaydet',
  JSON.stringify(postFiles)
)
  .map(res => res.json());
}

formData=formData {} >> 这样是空的。

最佳答案

要将 image(avatar) 发送到服务器或 web api,您可以使用 FormData,如果您想达到此目的,请逐步完成以下工作:

  1. 在 html 文件中使用 #avatar 访问组件中的 ElementRef:

    <form (ngSubmit)="onSubmit()">
        <input type="file" accept=".png, .jpg, .jpeg" #avatar>
    </form>
    

  1. 创建组件并用于发送图片到服务器;

    import {Component} from '@angular/core';
    import {ElementRef} from '@angular/core';
    import {ViewChild} from '@angular/core';
    
    import {HttpClient} from '@angular/common/http';
    import {HttpParams} from '@angular/common/http';
    import {HttpHeaders} from '@angular/common/http';
    
    @Component({
        selector: 'app-avatar',
        templateUrl: './avatar.component.html',
        styleUrls: ['./avatar.component.css']
    })
    export class AvatarComponent {
        @ViewChild('avatar') avatar: ElementRef;
    
        constructor(private http: HttpClient) { }
    
        onSubmit() {      
            const formData = new FormData();
            formData.append('avatar', 
                            this.avatar.nativeElement.files[0], 
                            this.avatar.nativeElement.files[0].name);
    
            const headers = new HttpHeaders();
            headers.append('Content-Type', 'multipart/form-data');
            headers.append('Accept', 'application/json');
            this.http.post('api/upload', formData, {headers: headers})
                .subscribe(
                    (response) => {
                    },
                    (error) => {
                    }                   
                 );
         }
    
    }
    

Notice to adding file to FormData like below method with parameters

formData.append(name, fileValue, fileName)

关于 Angular 2格式数据为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47656745/

相关文章:

java - JHipster - 将默认页面更改为某个实体页面

javascript - 将事件附加到 Angular2 中的新元素

javascript - 如何使用node.js请求模块发送文件?

javascript - 如何将 Blob 附加到 FormData

javascript - 使用 formData 上传文件时输入错误

typescript - Angular 2 : Inject external Component into other component via directive not working

angular - 我可以使用多个@hoSTListener 或基于浏览器的事件吗?

javascript - 无法从现有表单构建 FormData 对象

Angular 4如何应用动态样式?

javascript - 提交具有相同名称的多个输入