将文件转换为角度到laravel后请求的空数组

时间:2018-10-10 15:31:44

标签: javascript php angular laravel laravel-5

我正在尝试执行基本的Laravel 5 post请求,只需执行以下操作即可:

  • 将一些数据保存到数据库中
  • file(图片)存储到公共存储中,其名称可能是“ .jpg”之后的20个随机数字的组合
  • 保存一个网址(用于在img标签中定位图像。我知道这不是最好的方法,请随时发布)

但是,当执行普通的post请求而没有从angular 6laravel 5的特殊标头时,由于某些原因,File会继续转换为empty数组。 (下面是前后镜头)

之前:

0: Object { id: 0, body: null, file: File }

之后:

0: Object { id: 0, body: null, file: [] }

File已满,用于在提交之前在画布上创建预览,因此可以使用。在Laravel中执行任何php代码之前,控制台在发布和返回$req Request之前在行中记录此数据。

因此,翻译中可能会丢失的唯一地方是两者之间。代码如下:

角度6:

postToLaravel(object) {
  console.log(object.message);
  this.http.post(this.url + '/add/message', object).subscribe(res => {
    console.log(res);
  });
}

Laravel 5:

function addMessage(Request $req) {
    return $req->messages;

empty数组一直以其注册为storage文件的名称将任何内容推入jpg,但未显示图像。

在上载图像的组件上,发生(更改)=“​​”事件之后,我们进行了以下阻止:

onFileSelected(e: any) {
    this.sectedFile = e.target.files[0];
    this.isImage = true;
    this.messageService.addImage(this.id, this.sectedFile);
    this.preview();
  }

服务功能只是找到合适的对象并添加文件:

addImage(id, file) {
    var index = this.data.findIndex(x => x['id'] == id);
    this.data[index]['body'] = null;
    this.data[index]['file'] = file;
  }

当按下提交按钮时,它只获取服务中的所有变量并将其压缩为一个对象。该对象包含messages,它是其他对象的数组(这些对象如顶部所示)(如果有意义)

pushMessageToServer() {
  this.messageService.postToLaravel({
    title: this.title,
    location: this.location,
    gender: this.gender,
    age: this.age,
    deadline: this.deadline,
    messages: this.data
  });
}

我这里缺少什么吗?

让我知道您是否需要其他信息。

1 个答案:

答案 0 :(得分:0)

将FormData中的图像传递出去并在控制台中显示为空对象。我只需要知道如何抓住它们。谢谢大家的帮助