Преобразование файла в пустой массив при угловом и почтовом запросе - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь выполнить базовый запрос Laravel 5 post, который просто делает следующее:

  • Сохраняет некоторые данные в базу данных
  • Сохраняет file (изображение) в публичное хранилище под именем, которое является возможной комбинацией из 20 случайных чисел после '.jpg'
  • Сохранить URL-адрес (который используется для поиска изображения в теге img. Я в курсеэто не лучший подход, поэтому не стесняйтесь публиковать)

Однако при выполнении обычного запроса post без специальных заголовков от angular 6 до laravel 5, по некоторым причинам File продолжает преобразовываться в массив empty.(До и после снимков ниже)

до:

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

после:

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

File заполнен и используется для создания предварительного просмотра нахолст перед отправкой так работает.Консоль записывает эти данные в строку перед отправкой и возвратом $req Request перед выполнением любого php-кода в Laravel.

Таким образом, единственное место, которое может быть потеряно при переводе, - это промежуточное значение.Код выглядит следующим образом:

Угловой 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, но изображение не отображается.

На компоненте, который загружает изображения, после события (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
  });
}

Есть ли что-то, что я здесь упускаю?

Дайте мне знать, если вам понадобится дополнительная информация.

1 Ответ

0 голосов
/ 12 октября 2018

Оказывается, изображения в FormData передаются и отображаются как пустые объекты в консоли.Мне просто нужно было знать, как их схватить.Спасибо всем за помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...