2

我的 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 获取它?谢谢你。

4

2 回答 2

5

好的,有了 ikkez 的提示,我发现了这一点:

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

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

$name = $name['0'];

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

于 2014-07-09T15:44:29.253 回答
2

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

于 2014-07-07T10:04:43.570 回答