Question

I am new to slim php framework, I want to upload an image and put the file name in the database via POST, can some one kindly give me some example code.

Was it helpful?

Solution

Here's the router:

$app->post('/', 'uploadFile');

this will point to the function below:

function uploadFile () {
    if (!isset($_FILES['uploads'])) {
        echo "No files uploaded!!";
        return;
    }
    $imgs = array();

    $files = $_FILES['uploads'];
    $cnt = count($files['name']);

    for($i = 0 ; $i < $cnt ; $i++) {
        if ($files['error'][$i] === 0) {
            $name = uniqid('img-'.date('Ymd').'-');
            if (move_uploaded_file($files['tmp_name'][$i], 'uploads/' . $name) === true) {
                $imgs[] = array('url' => '/uploads/' . $name, 'name' => $files['name'][$i]);
            }

        }
    }

    $imageCount = count($imgs);

    if ($imageCount == 0) {
       echo 'No files uploaded!!  <p><a href="/">Try again</a>';
       return;
    }

    $plural = ($imageCount == 1) ? '' : 's';

    foreach($imgs as $img) {
        printf('%s <img src="%s" width="50" height="50" /><br/>', $img['name'], $img['url']);
    }
}

If anyone have better answer, please be welcome to alter mine.

OTHER TIPS

The creator of Slim has made a library to handle file uploading through Slim: https://github.com/brandonsavage/Upload

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top