PHP 表单 - 上传文件,想使用 Silex 而不是 FormBuilder
PHP Form - Uploading Files, wanting to use Silex but not FormBuilder
我正在使用 Silex 构建应用程序,尽管这不是典型的 Silex 设置。
我已将 Mustache 作为模板引擎。
我没有将 Doctrine 用于 ORM / DBAL,我正在使用 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>
我正在使用 select 文件,不过,到目前为止我看到的所有关于 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 来处理文件上传?
我在这里遇到了精神障碍,需要一只手;谢谢!
为了将文件发送到服务器,浏览器必须使用 multipart/form-data 对其数据进行编码,因此您应该尝试添加属性 enctype='multipart/form-data'
添加到您的表格(目前缺失)。
有关详细信息,请参阅 here。
我正在使用 Silex 构建应用程序,尽管这不是典型的 Silex 设置。
我已将 Mustache 作为模板引擎。
我没有将 Doctrine 用于 ORM / DBAL,我正在使用 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>
我正在使用 select 文件,不过,到目前为止我看到的所有关于 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 来处理文件上传?
我在这里遇到了精神障碍,需要一只手;谢谢!
为了将文件发送到服务器,浏览器必须使用 multipart/form-data 对其数据进行编码,因此您应该尝试添加属性 enctype='multipart/form-data'
添加到您的表格(目前缺失)。
有关详细信息,请参阅 here。