Php 使用Slim框架从POST获取要上载到解析的文件

Php 使用Slim框架从POST获取要上载到解析的文件,php,forms,parse-platform,slim,Php,Forms,Parse Platform,Slim,在发布了一个带有Slim框架的表单之后,我目前正试图上传一个要解析的文件。由于某些原因,我获取了文件名,但无法使用当前设置获取文件。我也尝试过寻找$\u文件数组,但什么也找不到。有什么我遗漏的吗?以下是我目前的路线: $app->group('/settings', function () use ($app) { $app->post('/update(/:settingsId)', function ($settingsId = null) use ($app) {

在发布了一个带有Slim框架的表单之后,我目前正试图上传一个要解析的文件。由于某些原因,我获取了文件名,但无法使用当前设置获取文件。我也尝试过寻找$\u文件数组,但什么也找不到。有什么我遗漏的吗?以下是我目前的路线:

$app->group('/settings', function () use ($app) {
    $app->post('/update(/:settingsId)', function ($settingsId = null) use ($app) {
        $query = new ParseQuery("Settings");
        // Get a specific object:
        $settings = $query->get($settingsId);

        // Set values:
        $settings->set("appName", $app->request->post('appName'));
        $settings->set("directorName", $app->request->post('directorName'));
        $settings->set("mkUsername", $app->request->post('mkUsername'));
        $settings->set("mkPassword", $app->request->post('mkPassword'));

        error_log(print_r($_FILES, true));

        // see if we have a file
        if ($app->request->post('appBackgroundImage')) {
            // save file to Parse
            $appBackgroundImage = ParseFile::createFromData(file_get_contents($_FILES["file"]["tmp_name"]), $app->request->post('appBackgroundImage'));
            $appBackgroundImage->save();

            $settings->set("appBackgroundImage", $appBackgroundImage);
        }

        try {
            $settings->save();
            $app->redirect('/settings');
        } catch (ParseException $ex) {
            $app->redirect('/settings/' . $ex->getCode());
        }
    });
});

我不确定这是否是实现这一目标的完全正确的方法,但这就是我实现这一目标的方式。如果有人有更好的主意,我会洗耳恭听

我将其添加到我的JS中,因此它实际上通过AJAX发布表单,并将文件与正常表单内容一起推送

// File Uploader
        var form = document.getElementById('settings-form');
        form.onsubmit = function() {
          var formData = new FormData(form);

          formData.append('appBackgroundImage', file);

          var xhr = new XMLHttpRequest();
          // Add any event handlers here...
          xhr.open('POST', form.getAttribute('action'), true);
          xhr.send(formData);

          return false; // To avoid actual submission of the form
        }