1

Hello awesome people of SE! :)

Okay, so this is a little far-fetched but I'm trying to get a HTML form with a PHP upload script to work inside a Wordpress page. I can't use a plugin. It's supposed to be a webpage for like a designteam where customers can upload images through the html form (will require login and stuff but I'll deal with that later)

I got a child theme, I've created a page called "upload" and I am editing the file "page-upload.php"

My form in page-upload.php

        <form action="<?php bloginfo('template_url'); ?>/upload.php" method="post" enctype="multipart/form-data">
           <input type="file" name="file" />
            <input type="submit" name="submit" value="Upload" />
        </form>

form action = "upload.php" didn't locate the file correctly so after some googling I found this:

< ?php bloginfo('template_url'); ?>/upload.php"

which manage to locate the file but instead of uploading the image it just echoed every echo from the PHP.

I've used W3Schools PHP file upload example to just get me started but obv it wasn't as simple as I've hoped ^_^

http://www.w3schools.com/php/php_file_upload.asp

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
    echo "Sorry, there was an error uploading your file.";
    }
}
    ?>

So is this possible to do within WP with PHP and HTML or would it require some JS\jQuery in there? :)

2

Implementing your own upload form like this can be a major security vulnerability, you might want to instead use a library/script where such potential issues are already dealt with properly.

Here is one I remember using successfully on a project for a similar purpose (user uploaded video)... though it may be more than what you need, it does have more examples and documentation than a simplified web example: PL Upload

EDIT: I just remembered that was actually my fallback uploader for that project, the main one used was ResumeableJS as it supports file resuming for large files (very handy for video uploads!)

  • 3
    Plupload is packaged with WordPress /wp-includes/js/plupload – BillK May 10 '16 at 4:06
  • @BillK ha cool that's awesome to know. – majick May 10 '16 at 4:24
  • Hilariously, PL Upload has its own fair share of security issues too ;) But the WP team keep pretty well on top of it! – Tim Malone May 10 '16 at 8:00
  • @majick Awesome advice, I manage to get PL Upload work inside the root of my server but unfortanetly it didn't work inside the wordpress page, I keep getting 404, that it can't locate upload.php that recides in the root of the wordpress theme. The url goes website.com/services/upload so in the JavaScript PL uses the variable "url = 'upload.php' so I added ../../upload.php so the path should be fine but it still can't seem to find it. Weird. – thePHPn00b May 11 '16 at 1:22
  • not sure but found this example, hope it helps: krishnakantsharma.com/… – majick May 11 '16 at 4:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.