2016-04-12 4 views
0

Я использую FOS Rest Bundle для создания REST API, где, как я полагаю, можно обрабатывать загрузку файлов. Проблема в том, что я не знаю, как отправлять и получать файлы. Мой единственный опыт передачи файлов с $ _FILES PHP, и это не очень помогает мне.Как работать с файлами через FOSRestBundle

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

Я также совершенно новичок в symfony2, но я понимаю основные понятия.

ответ

1

FOSRestBundle или нет, вы можете использовать $files, предоставленный Request, чтобы загрузить файл/s.

use Symfony\Component\HttpFoundation\Request; 

public function uploadAction(Request $request) 
{ 

    $file = $request->files->get('file'); 
    //do what ever you want to do with the files 

} 

, если вы хотите сделать это с помощью помощников, предлагаемые FOSRestBundle, проверить этот https://github.com/FriendsOfSymfony/FOSRestBundle/pull/1097

1

Я решил эту проблему несколько месяцев назад:

В контроллере (APIController) вы используете это действие (метод)

public function postUploadAction(Request $request) 
{ 
    $uploadedfile = $this->getRequest()->files->get('file'); 
    $directory = __DIR__.'/../../../../web/uploads/pinkSheet'; 

    foreach($request->files as $uploadedFile) { 
     $file = $uploadedFile->move($directory, $uploadedFile->getClientOriginalName()); 
    } 

    return 'file uploaded.'; 
} 

и для клиента (в моем случае, я получил данные из приложения Android), вы просто отправляете файл так, как это было бы в форме html с ключом (я вызываю мой «файл»), вы можете его протестировать (в моем случае я использовал расширение google chrom Postman

Не забудьте выбрать «form-data» на почтальоне Надеюсь, это вам поможет.

+0

Привет мой друг ... После того, как я загрузить файл, я могу изменить его? Переименовать, создать изображение? –

+0

Конечно, Symfony предлагает некоторый хороший API для манипулирования объектом $ uploadedFile –

Смежные вопросы