Я пытаюсь загрузить изображение профиля в Angular 5.2 и Laravel 5.5.Я мог успешно загрузить изображение в отдельную папку в локальном хранилище.Затем я хотел отобразить загруженное изображение так же, как в Facebook.Затем я мог просмотреть загруженное изображение, но оно не загружается в папку.Это мой текущий код. Он показывает ошибки, подчеркивая append, event.
uploadFile(event) {
if (event.target.files.length > 0) {
const reader = new FileReader();
reader.append('myfile', elem.files[0]);
reader.readAsDataURL(event.target.files[0]);
reader.onload = (event) => {
this.url = event.target.result;
};
this.fileService.sendFile(reader).subscribe(
(response) => {
console.log(response);
});}
}
Код, который можно загрузить в папку с кодом laravel, находится здесь.
uploadFile(event){
const elem = event.target;
if(elem.files.length > 0){
const formData = new FormData();
formData.append('myfile', elem.files[0]);
this.fileService.sendFile(formData).subscribe(
(response) => {
console.log(response);
}); }
elem.value = "";
}
файл службы
export class FileService {
constructor(private httpClient: HttpClient) { }
sendFile(formData: any) {
const baseUrl = 'http://127.0.0.1:8000/api';
const url = `${baseUrl}/file`;
return this.httpClient.post(
url,
formData);
}
}
Вот мой файловый контроллер в laravel
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FileController extends Controller
{
public function saveFile(Request $request){
$File = $request -> file('myfile');
$sub_path = 'files';
$real_name = $File -> getClientOriginalName();
$destination_path = public_path($sub_path);
$File->move($destination_path, $real_name);
return response()->json('File Save');
}
}
Используя приведенный ниже код, я мог просмотреть изображение после открытия изображения.
url = '';
onSelectFile(event) {
if (event.target.files && event.target.files[0]) {
var reader = new FileReader();
reader.readAsDataURL(event.target.files[0]); // read file as data url
reader.onload = (event) => { // called once readAsDataURL is completed
this.url = event.target.result;
}
}
}