- 通常、Silexでは
$_FILES
ではなく$request->files
経由でアップロードされたファイルの情報にアクセスする。 - iframeを利用して非同期にファイルをアップロードした場合、Silexは
$request->files
にファイルをセットしてくれない - 以下のように自力でファイルをセットしてあげると、
$_FILES
を利用しなくてすむ
$app = new Silex\Application();
$app->before(function (Symfony\Component\HttpFoundation\Request $request) {
// ヘッダをもとに非同期のファイルアップロードかどうかを判断する
// 以下はjquery.iframe-transportを利用している場合の例
if ($request->get('X-Requested-With') === 'IFrame') {
$request->files->replace($_FILES);
}
});
$app->post('/file/', function (Silex\Application $app) {
$app['request']->files->get('file'); // Symfony/Component/HttpFoundation/File/UploadedFile
});
$app->run();