【问题标题】:Catch uploaded file name in Fat Free Framework在 Fat Free Framework 中捕获上传的文件名
【发布时间】:2014-08-27 12:22:21
【问题描述】:

我的 php 脚本必须处理非 slug 文件名上传,例如,当用户尝试上传文件“Имя на русском.jpg”时。有些方法不能正确处理,所以我使用:

$overwrite = true;
$slug = true;
\Web::instance()->receive(NULL,$overwrite,$slug);

所以,我在服务器上获得了“imja-na-russkom.jpg”文件。问题是我需要为 DB 捕获这个文件名,为此我尝试了这个:

$filename = \Web::instance()->Slug($_FILES['userfile']['name'];

返回“imja-na-russkom-jpg” - 不是文件系统中使用的名称(不是点,而是扩展名前的破折号)。

所以,我的问题是:有没有办法捕捉名称,在 Web::receive() 中使用,或者,如果没有,是否有一种解决方法可以通过 F3 获取它?谢谢。

【问题讨论】:

    标签: php file-upload slug fat-free-framework


    【解决方案1】:

    好的,根据 ikkez 的提示,我想通了:

    $a = Web::instance()->receive(NULL,true,true);
    $name = array_keys($a);
    $name = pathinfo($name['0'], PATHINFO_BASENAME);
    

    这里我们将文件上传到服务器并将其名称保存到 $name 变量中。您可以跳过最后一行并使用

    $name = $name['0'];
    

    如果您想保存上传文件的完整路径。

    【讨论】:

    • 如果您的文件没有正确上传会发生什么? $name 变量仍然返回名称,您将存储服务器上不存在的文件的名称。我认为您也应该检查布尔值。
    【解决方案2】:

    \Web::instance()->receive 函数返回上传文件的数组。您将在数组键中看到 slugged 名称。查看http://fatfreeframework.com/web#receive的示例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多