从POST请求获取HTTP响应代码-1

时间:2019-04-10 20:10:59

标签: nativescript angular2-nativescript

我正在尝试将文件上传到服务器,并且不断收到错误响应代码-1。

这是针对使用Angular构建的NativeScript应用程序,而我正在使用NativeScript HTTP Background插件。

component.ts

onCreateRecipe() {
      console.log(this.imageUris);

    const recipeForm = { 
      name: this.form.get('name').value, 
      description: this.form.get('description').value, 
      photo: this.imageUris[0], 
      ingredients: this.form.get('ingredients').value,       
      // steps: this.form.get('steps').value,
      // tag: 'poultry recipe'
      type: this.recipeType
    };
    console.log(recipeForm);
    this.apiService.postRecipe(recipeForm).subscribe(res => console.log(res));
  }

service.ts

postRecipe(recipe) {
    const session = bghttp.session('image-upload');
    const subject = new Subject<any>();

    const request = {
      url: `${this.apiURL}/recipe/1`,
      method: 'POST',
      headers: {
        "Content-Type": "application/octet-stream"
      },
      description: 'test'
    };

    let task: bghttp.Task;
    const params = [
      { name: 'name', value: recipe.name },
      { name: 'description', value: recipe.description },
      { name: 'photo', filename: recipe.photo, mimeType: 'image/png' },
      { name: 'ingredients', value: JSON.stringify(recipe.ingredients) }
    ];
    console.log(params);
    task = session.multipartUpload(params, request);
    task.on('responded', (event: any) => {
      if (event.data && event.data.error) {
        subject.error(event.data);
      } else {
        subject.next(event.data);
      }
    });
    // task.on('error', (event) => subject.error(event));
    task.on('error', (e) =>console.log("received " + e.responseCode + " code."));
    return subject;
  }

注意:成分是一个FormArray,这就是为什么我必须使用JSON.Stringify将其传递给插件的原因。 recipe.photo是图像的文件路径。

我希望所有数据(包括图像文件)都可以上传到服务器,但是现在仅图像正在上传。

0 个答案:

没有答案