Загрузить изображение и просмотреть его после загрузки - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь загрузить изображение профиля в 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;
  } 
 }
}

1 Ответ

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

Я мог загрузить изображение в папку в локальном хранилище, и в то же время я мог просмотреть его, используя следующий код.Но все равно он показал ошибку по результату.Мне нужно знать правильный способ сделать это.

ошибка TS2339: свойство 'result' не существует для типа 'EventTarget'.

Код здесь.

uploadFile(event) {
if (event.target.files.length > 0) {
  const reader = new FileReader();
  const formData = new FormData();
  formData.append('myfile', event.target.files[0]);
  reader.readAsDataURL(event.target.files[0]);
  reader.onload = (event) => {
    this.url = event.target.result;
  };
  this.fileService.sendFile(formData).subscribe(
        (response) => {
          console.log(response);
        });
}
event.target.value = '';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...