2016-10-19 14 views
5

Mam API (stworzony przez Lumen), aby zapisać obraz lub plik ze strony klienta.Laravel: Jak wysłać obraz lub plik do API

to jest mój kod API

if ($request->hasFile('image')) { 
    $image = $request->file('image'); 

    $fileName = $image->getClientOriginalName(); 
    $destinationPath = base_path() . '/public/uploads/images/product/' . $fileName; 
    $image->move($destinationPath, $fileName); 

    $attributes['image'] = $fileName; 
} 

już spróbować API w listonosza, i wszystko poszło dobrze, obraz pomyślnie przesłany.

Jaka jest najlepsza praktyka wysyłania obrazu ze strony klienta (wywołanie interfejsu API) i zapisania obrazu w projekcie interfejsu API? ponieważ mój kod nie działa ..

To jest mój kod przy próbie otrzymania pliku obrazu po stronie klienta, a następnie wywołanie API.

if ($request->hasFile('image')) { 
    $params['image'] = $request->file('image'); 
} 

$data['results'] = callAPI($method, $uri, $params); 
+0

Are chcesz zapisać obraz? –

+0

Tak, wyślij obraz do interfejsu API i zapisz go w publicznym folderze API –

+0

jedną z opcji jest kodowanie pliku w bazie 64 i wysyłanie przez POST. Ale musisz zmienić kod źródłowy "serwera" – cmnardi

Odpowiedz

1

To prawda, że ​​nie można tego zrobić bez wysłania go pocztą z formularza.

Alternatywą jest wysłanie zdalnego źródła URL i pobrać go w API jak ten:

if ($request->has('imageUrl')) { 

    $imgUrl = $request->get('imageUrl'); 
    $fileName = array_pop(explode(DIRECTORY_SEPARATOR, $imgUrl)); 
    $image = file_get_contents($imgUrl); 

    $destinationPath = base_path() . '/public/uploads/images/product/' . $fileName; 

    file_put_contents($destinationPath, $image); 
    $attributes['image'] = $fileName; 
} 
Powiązane problemy