2015-04-28 15 views
0

我一直在嘗試使用控制器在我的數據庫中存儲二進制文件。我有一個blob字段的實體。我如何讀取上傳的文件,獲取它的二進制數據並將其存儲在我的blob字段中?數據庫中Symfony2控制器存儲文件

到目前爲止,我有這樣的代碼:

public function postPictureAction($slug, Request $request) 
    { 
    return $request->files; 
    } 

而且我回來的:

{ 

    "parameters": { 
     "picture": { 
      "test": false, 
      "original_name": "Untitled Diagram.png", 
      "mime_type": "image/png", 
      "size": 13423, 
      "error": 0 
     } 
    }, 
    "file_keys": [ 
     "error", 
     "name", 
     "size", 
     "tmp_name", 
     "type" 
    ] 
} 

所以文件似乎上傳就好了,但現在,它在哪裏?我怎麼讀它?

此代碼返回文件的MIME類型:

$picture->setType($file->getMimeType()); 

但是,這只是直覺,因爲我沒有找到「文件」類中的任何文件。有這樣的文件嗎?

回答

1

您正在使用的路徑將讓您擺脫Symfony2,您將使用本機PHP的路徑,使用'文件'作爲類型來創建上傳文件,並將其作爲UploadFile對象返回。然後,如果你真的想你的文件存儲在數據庫中的BLOB和未使用的上傳文件夾的建議在docs:http://api.symfony.com/2.0/Symfony/Component/HttpFoundation/File/UploadedFile.html

您可以使用此:

public function upload(){ 
    $file = $request->files->get('picture'); 
    $entity->setBinary(file_get_contents($file)); //binary property of your entity class is the blob 

    $entity_manager->persist($entity); 
    $entity_manager->flush(); 

} 
+0

我的目標可擴展性和可移植性。你對我描述的這種方法有什麼想法? – danielrvt

+0

我寧願將圖像留在數據庫外面,我創建的實體將具有圖像元數據,然後將圖像上傳到結構化文件夾中。這樣你不必從數據庫中查詢重二進制文件來獲取圖像,只有元數據然後從上傳的文件夾中獲取它們 –

0

該文件沒有存儲在任何地方(不是在一個持久的地方,是在php.ini中描述的上傳文件的臨時目錄中,如果會話結束,文件將會),它只是在HTTP中發送的要求,這就是你正在閱讀什麼時候回來

here你可以閱讀更多有關文件的上傳和學說相關的東西,但如果你想只存儲一個文件有沒有必要使用學說ORM

here the UploadFile API (HttpFoundation component) 你的可以看到這個班生活在遠離教義生態系統的地方

相關問題