PHP表单 - 上传文件,想要使用Silex而不是FormBuilder

时间:2015-09-21 14:47:22

标签: php file upload silex mustache.php

我使用Silex构建应用程序,虽然它不是典型的Silex设置。

我有小胡子作为模板引擎。

我没有在ORM / DBAL中使用Doctrine,我使用了Capsule (Silex-Eloquent),并且遇到了严重的麻烦。

目前我有一张表格:

<form class="form-horizontal" role="form" action="app.php/listing" method="POST" id="listing-submit">

            <div class="form-group">
                <label class="control-label col-sm-2" for="title">Listing Title</label>

                <div class="col-sm-6">
                    <input id="title" class="form-control" type="text" size="40" autocomplete="off"
                           data-encrypted-name="title"/>
                </div>
            </div>

            <div class="form-group">
                <label class="control-label col-sm-2" for="description">Description</label>

                <div class="col-sm-6">
                    <textarea id="description" class="form-control" rows="8"></textarea>
                </div>
            </div>

            <div class="form-group">
                <label class="control-label col-sm-2">Images</label>

                <div class="col-sm-6">
                    <input type="file" name="images[]" id="images" multiple/>
                </div>
            </div>

            <div class="form-group">
                <div class="col-sm-offset-2 col-sm-6">
                    <button type="submit" class="btn btn-default">Submit</button>
                </div>
            </div>

        </form>

我用它来选择文件,但到目前为止,我所见过的所有Silex和文件上传示例都使用了我不熟悉的内容,并且我不确定是否可以使它适应我的用途:FormBuilder,FormBuilderInterface,注册自定义类型和所有爵士乐...

到目前为止,这是控制器部分:

$app->post("/plisting", function () use ($app) { 

  // $params = $request->all(); 
  $request = $app['request']; 
  $title = $request->get('title'); 
  $description = $request->get('description'); 
  $image = $request->files->get('image'); 

  // $file->move(__DIR__ . '/files', $file->getClientOriginalName()); // return "done"; 

  return "<pre>Class for request: " . get_class($request) . "<br>Title: $title <br>Description: $description<br>File: $image </pre>"; 
});

注意,我使用ajax处理文件上传。

我很好奇是否有人能够指导我使用现场设置和silex上传文件,或者我是否应该使用非框架PHP来处理文件上传?

我在这里的精神障碍,可以用一只手;谢谢!

1 个答案:

答案 0 :(得分:5)

为了将文件发送到服务器,浏览器必须使用 multipart / form-data 对其数据进行编码,因此您应该尝试将属性enctype='multipart/form-data'添加到表单中(目前缺少)。

有关详细信息,请参阅here