Я пытаюсь выполнить базовый запрос 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
});
}
Есть ли что-то, что я здесь упускаю?
Дайте мне знать, если вам понадобится дополнительная информация.