【问题标题】:How to get uploaded file name after rename in Fat-Free Framework?如何在 Fat-Free 框架中重命名后获取上传的文件名?
【发布时间】:2019-03-27 10:40:27
【问题描述】:

我用这个来保存上传的文件

$web = \Web::instance();

$uploadPath=$f3->get('uploadFolder');
$f3->set('UPLOADS',$uploadPath);

$overwrite = true;
$slug = true;

$files = $web->receive(function($file,$formFieldName){

        if(file_exists($file['name'])){
            //$file['name'] = $f3->get('uploadFolder').'rename.jpg'; // this is error, how to get path from config.ini here?
            $file['name'] = 'assets/img/upload/rename.jpg';
            move_uploaded_file($file['tmp_name'], $file['name']);
            return false;
        }else{
            return true;
        }
    },
    $overwrite,
    $slug
);

$savedFile=array_keys($files)[0];

这里只获取重命名前的文件路径,如何获取重命名后的路径?

以及如何在回调函数中获取配置?

【问题讨论】:

    标签: fat-free-framework


    【解决方案1】:

    您不需要从配置中获取任何上传目录或自己手动调用move_uploaded_file。这都是$web->receive 方法的一部分。

    $files 数组将包含完整的最终路径(包括重命名的文件名)。

    当您在回调函数中返回true 时,上传的文件将移动到UPLOADS F3 变量中定义的上传文件夹。如果需要,只需在回调函数中检查文件大小、mime 类型等。这就是您通常需要做的所有事情。

    【讨论】:

    • 如果我返回true,它将覆盖现有文件。如果我设置$overwrite = false,它不会调用回调函数
    • 好吧,抱歉,我一开始并没有注意到您试图避免文件名冲突。通常我只使用 UPLOADS 目录作为临时存储。我使用从 web->receive 返回的文件将文件移动到它们的最终文件夹。您可以检查那里是否已经存在任何文件并在移动期间更改文件名,但不是在回调中,这是正确的......也许可以将 $file 作为参考传递,而不是可以更改名称在回调中。需要测试一下。
    猜你喜欢
    • 2014-08-27
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多