【问题标题】:File converting into empty array on angular to laravel post request文件在角度到 laravel 发布请求时转换为空数组
【发布时间】:2019-03-15 13:51:20
【问题描述】:

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

  • 将一些数据保存到数据库中
  • file(图像)存储到公共存储中,名称可能是“.jpg”后面的 20 个随机数的组合
  • 保存一个 url(用于在 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 数组在注册为jpg 文件的名称下一直没有向storage 推送任何内容,但没有显示图像。

在上传图片的组件上,我们在 (change)="" 事件之后发生了以下块:

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
  });
}

这里有什么我遗漏的吗?

如果您需要任何额外信息,请告诉我。

【问题讨论】:

  • 你的 javascript 部分是什么样子的,需要先修复
  • 你能用那个代码更新你的答案,让它更具可读性
  • 好吧,我对 Angular 不熟悉,但是您在上面粘贴的代码没有提交功能,您在哪里将数据发布(xhr)到服务器(Laravel)
  • 我在最后提供了您要求的提交块。它基本上只是将所有局部变量编译成一个对象,并在一个 http post 请求中发布到 Laravel
  • 好的,您可以在您的 javascript 承诺中控制台.log 发布的数据以及您的控制器方法中的 dd($req->all()),看看您是否获得了正确的数据?

标签: javascript php angular laravel laravel-5


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-04
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多