Symfony 4 + przesyłanie plików.

Symfony 4 + przesyłanie plików.
ccwrc
  • Rejestracja:prawie 9 lat
  • Ostatnio:około 8 godzin
  • Postów:381
0

Jestem na nogach od 5:30, więc część opisu może być chaotyczna.

Mam 2 niezależne aplikacje w Symfony 4.

W aplikacji numer 1 mam endpoint, który przyjmuje POSTem dane pod kluczami 'id' (int) oraz 'file' (UploadedFile).
Pobierane w standardowy sposób z symfonowego obiektu Request:

Kopiuj
        $id = $request->request->getInt('id', null);
        $file = $request->files->get('file', null);

Kiedy przesyłam dane z klienta restowego wszystko działa, dane są przyjmowane.

Problem pojawia się kiedy chcę z aplikacji numer 2 przesłać takie same dane. Korzystam z symfonowego klienta http, ale za nic nie udaje mi się prawidłowo przesłać pliku.
Wysyłanie na endpoint, przykład:

Kopiuj
        $response = $httpClient->request('POST', $linkToApp1, [
           'body' => ['id' => 'zwykle_id', 'file' => fopen($pathToFile, 'r')]
        ]);

Próbowałem na różne sposoby, id udaje się przesłać bez problemu, pliku nie. Jeśli daję 'body' bez tablicy z samym fopen() to plik jest w request aplikacji nr 1, ale bez niczego: brak tytułu, typu, brak możliwości pobrania.

Pewnie za długo siedzę przed monitorem, każdy dziwny pomysł sprawdzę, bo mi pomysły się już skończyły.

Miang
a php ma uprawnienia do tego pliku?
MJ
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:34
0

Może brakuje jakiegoś nagłówka content-type?

ccwrc
Jeśli w body jest sam plik nagłówek dodawany jest z automatu, ale sprawdzałem także ręczne dodawanie pod kluczem headers - bez rezultatu.
MJ
A próbowałeś z multipart/form-data bo z tego co widzę httpclient dodaje application/x-www-form-urlencoded
ccwrc
Z tego co pamiętam tak bo ustawiałem także nagłówki z klienta restowego, gdzie wszystko przechodziło bez problemu. Rano odpalę kompa z IDE i zweryfikuję jeszcze raz.
ccwrc
Content-Type:multipart/form-data - bez rezultatu
ccwrc
  • Rejestracja:prawie 9 lat
  • Ostatnio:około 8 godzin
  • Postów:381
0

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.