用户冻结中的文件上传

时间:2016-08-08 14:30:01

标签: slim userfrosting

我们需要让用户上传图片作为注册过程的一部分。

曾尝试在控制器中访问$ _FILES ['filename'],结果显示在slim下未定义。

在一些文章中看到了Slim的文件上传方式,据报道这些文章正在发挥作用,但我还是碰壁了。

twig部分可以与Bootstrap File Input library

一起使用

对于使用File Upload library for Slim

的服务器部件

控制器代码(对AccountController的修改)看起来像这样

...
$storage = new \Upload\Storage\FileSystem('c:/xampp/htdocs/userfrosting/public/images/');
$file = new \Upload\File('imagefile', $storage);

$new_filename = 'test.jpg';
$file->setName($new_filename);

$file->addValidations(array(
    // Ensure file is of type "image/jpg"
    new \Upload\Validation\Mimetype('image/jpg'),
    // Ensure file is no larger than 500K (use "B", "K", M", or "G")
    new \Upload\Validation\Size('500K')
));

// Access data about the file that has been uploaded
$uploadfiledata = array(
    'name' => $file->getNameWithExtension(),
    'extension' => $file->getExtension(),
    'mime' => $file->getMimetype(),
    'size' => $file->getSize(),
    'md5' => $file->getMd5(),
    'dimensions' => $file->getDimensions()
);
error_log('$uploadfiledata' . print_r($uploadfiledata, true));
// Try to upload file
try {
    // Success!
    $file->upload();
} catch (\Exception $e) {
    // Fail!
    $errors = $file->getErrors();
}
...

返回以下错误

  

输入:InvalidArgumentException

     

消息:无法找到由key标识的上传文件:imagefile

     

文件:C:\ xampp \ htdocs \ userfrosting \ userfrosting \ vendor \ codeguy \ upload \ src \ Upload \ File.php

     

行:139

相关的树枝块是

<input id="imagefile" type="file" name="imagefile"  class="file" data-show-upload="false">

是否有人能够将文件上传作为任何Userfrosting代码的一部分工作?

感谢任何帮助/指针。

谢谢!

1 个答案:

答案 0 :(得分:3)

我的猜测是您使用ufFormSubmit提交注册表单,而不是抓取文件输入。因此,您可能需要在客户端添加一些额外的代码,以显式提交文件输入以及表单的其余部分。使用Dropzone和UF查看此示例:https://gist.github.com/frostbitten/c1dce70023321158a2fd#file-upload-twig

顺便说一下,您可以使用浏览器查看在POST请求中发送的实际数据。例如,在Firefox中,您可以使用Network Monitor