2016-04-12 30 views
0

Dosya yükleme işlemlerini gerçekleştirebileceğimi düşündüğüm bir REST API'si oluşturmak için FOS Rest Bundle kullanıyorum. Sorun, dosyaları nasıl göndereceğimi ve almayı bilmiyorum. Dosya aktarımı ile ilgili tek deneyimim PHP $ _FILES ile ve bana çok yardımcı olmuyor.Dosyalarla çalışma FOSRestBundle

Base64'te kodlamayı ve dosyayı JSON'a göndermeyi düşünüyorum, ancak dosya oldukça büyük olabileceğinden, bu geçerli bir çözüm değildir. Şu andan itibaren, meta verileri json ve dosyayı göndermek için başka bir istek göndermek için bir istekte bulunmayı düşünüyorum. Dosya aktarımı ile ilgili herkesin göründüğü gibi bir örnek bulamadım ama nasıl çalıştığını biliyor.

Ayrıca, symfony2'ye oldukça yeni geliyorum ama temel kavramları anlıyorum.

Ben birkaç ay önce bu sorunu hallettim

cevap

1

FOSRestBundle veya değil, yüklenen dosya/dosyaları almak için Request tarafından sağlanan $files kullanabilirsiniz.

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 

} 

Eğer FOSRestBundle sunduğu yardımcıları kullanarak bunu yapmak istiyorum eğer

i dosyayı yükledikten sonra bunu değiştirebilirsiniz ... Bu https://github.com/FriendsOfSymfony/FOSRestBundle/pull/1097

1

: Kumandanızda (APIController) Bu işlemin (yöntem)

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.'; 
} 

içinde ve müşteriniz için

(benim durumumda ben verilerini alınan bir Android App), sadece bir html formunda bir dosya ile gönderirsiniz (ben benim "dosya" diyorsunuz) olarak test edebilirsiniz (benim durumumda) google chrom uzantısını kullanıyorum Postman

Postacı'de "form-data" öğesini seçmeyi unutmayın 0 Umarım size yardımcı olur.

+0

Merhaba arkadaşım kontrol? Yeniden adlandır, görüntüyü düzeltmek mi? –

+0

Elbette Symfony, $ uploadedFile nesnesini manipüle etmek için güzel bir API sunar –