How to Enable File Upload in Php

php-file-upload

Uploading files, images, and videos using PHP is as easy every bit adding a couple of scripts. This guide volition show you two different means on how to add php file upload functionality to your site:

  • The Simple PHP Manner – This is the simplest way of adding a PHP uploader to your service. The upside is that y'all have complete control of the files being uploaded.
  • Filestack's PHP File Upload Service – This is an easier way of adding PHP upload functionality. The upside is that you do not have to manage the complex file upload infrastructure backside-the-scenes.

Let's go started with some piece of cake examples:

PHP File Upload – The Simple Mode

To start, we'll create the following:

1. The HTML Form

Get-go, we'll create an HTML class that the user will encounter when they desire to upload the file. Create a new folder for this case project, and within information technology, create an index.html file with the following lawmaking:

          <!DOCTYPE html> <html lang="en"> <caput>     <meta charset="UTF-viii">     <title>PHP File Upload</title> </head> <body>     <form action="fileUploadScript.php" method="post" enctype="multipart/form-information">         Upload a File:         <input type="file" proper name="the_file" id="fileToUpload">         <input type="submit" proper noun="submit" value="Start Upload">     </form> </body> </html>                  

A couple important things to find in the case above:

  • action="fileUploadScript.php" – This references the PHP script that volition handle the file upload on the backend
  • method="postal service" – This tells the browser activeness the form will use when sending the file to the server (for uploads, this is almost ever a Postal service action, sometimes a PUT)
  • enctype="multipart/grade-data" – This determines the content-blazon that the class submits

Next, open up your final and from the directory where you created the file, start the PHP server:

php-file-upload

Then, open your spider web browser and get to localhost:1234. You should see something similar this:

php-file-upload

ii. The PHP File Upload Script

Next, we'll handle the backend of the file upload. Start, in the same directory, create a new directory chosen uploads. This will be where our script will save the files.

And so, in the same directory as index.html, create a file called fileUploadScript.php. Observe that this is the same name as the activeness attribute in the form. Then add this code:

          <?php     $currentDirectory = getcwd();     $uploadDirectory = "/uploads/";      $errors = []; // Store errors here      $fileExtensionsAllowed = ['jpeg','jpg','png']; // These will be the only file extensions allowed       $fileName = $_FILES['the_file']['proper name'];     $fileSize = $_FILES['the_file']['size'];     $fileTmpName  = $_FILES['the_file']['tmp_name'];     $fileType = $_FILES['the_file']['blazon'];     $fileExtension = strtolower(end(explode('.',$fileName)));      $uploadPath = $currentDirectory . $uploadDirectory . basename($fileName);       if (isset($_POST['submit'])) {        if (! in_array($fileExtension,$fileExtensionsAllowed)) {         $errors[] = "This file extension is not allowed. Please upload a JPEG or PNG file";       }        if ($fileSize > 4000000) {         $errors[] = "File exceeds maximum size (4MB)";       }        if (empty($errors)) {         $didUpload = move_uploaded_file($fileTmpName, $uploadPath);          if ($didUpload) {           echo "The file " . basename($fileName) . " has been uploaded";         } else {           echo "An error occurred. Please contact the administrator.";         }       } else {         foreach ($errors as $error) {           echo $mistake . "These are the errors" . "\n";         }       }      } ?>                  

A couple things to note:

  • The key used to access the file from the $_FILES object matches the name attribute used in the form
  • $fileName = $<em>FILES['the</em>file']['proper name']; – This is the proper noun of the actual file
  • $fileSize = $<em>FILES['the</em>file']['size']; – This is the size of the file in bytes
  • $fileTmpName = $<em>FILES['the</em>file']['tmp_name']; – This is the a temporary file that resides in the tmp directory of the server
  • $fileExtension = strtolower(cease(explode('.',$fileName))); – This gets the file extension from the file proper noun
  • $uploadPath = $currentDir . $uploadDirectory . basename($fileName); – This is where the files will be stored on the server. In the script above, information technology is set to the electric current working directory

Also note that in the code higher up, we validate the file upload by checking both the file type and size. (But png and jpeg files that are less than 4MB)

Now there are a couple final steps before we can start uploading files:

  • Go to your uploads/ directory and arrive writable by running: chmod 0755 uploads/
  • Brand sure your php.ini file is correctly configured to handle file uploads (Tip: to find your php.ini file, run php --ini):
          max_file_uploads = 20 upload_max_filesize = 2M post_max_size = 8M                  

Finally, if y'all now start the PHP server and go to localhost:1234, and then upload a file, you lot should come across it save in the uploads folder!

Keep in mind that the all of the code to a higher place requires additional security precautions before being released in product. For instance, there are currently no checks to meet if the user has uploaded a virus bearded as an image. To learn more, check out this article which describes various ways to handle secure file uploads.

File Upload with Filestack

In this second example, nosotros'll apply Filestack to upload a file. Filestack is an advanced file upload API and service that securely stores files in the cloud.

Why employ a third party like Filestack over building information technology yourself? Past using a tertiary political party you no longer need to deal with the scaling, security, and maintenance that comes with building your own file upload system. This can gratuitous you upward to focus on building other important parts of your awarding.

And you can become started for gratuitous. Filestack has a free plan that handles upwards to 100 monthly uploads with 1GB storage and 1GB bandwidth. If yous need to go beyond that amount, they offer pricing that scales with utilize.

So let's become started:

1. Sign upwards for a Filestack Business relationship

php-file-upload

Showtime, we'll sign up for a Filestack account. Go to their registration page and afterward you log in, get the API Key, which you will use in the later steps.

2. Commencement Uploading

Now that we have the Filestack library, let's integrate their JavaScript file uploader widget, which allows your users to connect to a diverseness of other sources from which to upload from. For example, if they wanted to upload from a URL or from social media. Merely supersede the contents of index.html with the post-obit:

          <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-viii">     <title>PHP File Upload</championship> </head> <body>     <way>       .picker-content{         top:300px;         width:200px;       }     </style>     <script src="//static.filestackapi.com/filestack-js/2.ten.x/filestack.min.js"></script>     <script type="text/javascript">       document.addEventListener("DOMContentLoaded", part(effect) {          const client = filestack.init(YOUR_API_KEY);           permit options = {           "displayMode": "inline",           "container": ".picker-content",           "take": [             "image/jpeg",             "epitome/jpg",             "paradigm/png"           ],           "fromSources": [             "local_file_system"           ],           "uploadInBackground": false,           "onUploadDone": (res) => console.log(res),         };          picker = client.picker(options);         picker.open();       });     </script>     <div class="picker-content"></div> </torso> </html>                  

Then, open your page and so upload a file using the upload widget. Later on uploading, you should be able to log into your Filestack dashboard and run into your newly uploaded file:

filestack-dashboard

And that'due south it! Yous don't even demand the server to handle the file, which is better for scalability, security, and maintenance.

Filestack PHP Library (optional)

The in a higher place case covers the simplest instance of uploading a file with Filestack. But, what if you wanted to access the file on your server to run some kind of post-processing, similar checking if an prototype is safe for work? To do that, you can apply the Filestack PHP library. We'll use Composer to install the Filestack PHP library. If you don't take Composer already, you can install it past going to the folder y'all created originally and running (see this for official documentation):

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer decadent'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"        

Subsequently you exercise the above, you should be able to encounter Composer'south output past running php composer.phar.

Then run require --prefer-dist filestack/filestack-php to install the Filestack SDK.

Now that we accept the Filestack library, let's make a new PHP script to bank check if a specific uploaded file is condom for piece of work. Create a new file chosen fileUploadFilestack.php and add the following (making sure to alter the YOUR_API_KEY, YOUR_SECURITY_SECRET, and YOUR_FILE_HANDLE variables):

          <?php   crave __DIR__ . '/vendor/autoload.php';   use Filestack\FilestackClient;   $client = new FilestackClient(YOUR_API_KEY);   $security = new FilestackSecurity(YOUR_SECURITY_SECRET);    $file_handle = YOUR_FILE_HANDLE;    # get tags with client   $result_json = $client->getTags($file_handle);    # become tags with filelink   $filelink = new Filelink($file_handle, YOUR_API_KEY, $security);    $json_result = $filelink->getTags();    # get safe for piece of work flag with filelink   $json_result = $filelink->getSafeForWork(); ?>                  

When this script is run, the event of the safe-for-work bank check will be saved in the $json_result variable. And that'south but ane example. Using the Filestack PHP SDK allows you to perform a variety of tasks on your uploaded files. Check out these other examples:

  • Transform a file before upload
  • Test if a file upload is "safe for work"
  • Transcode uploaded video or audio
  • Convert a file upload to pdf
  • And more than…

In improver, if you want to encounter more examples of how the file upload picker tin can be integrated into a class check out these links:

  • Upload image
  • Open picker
  • Open up picker in inline mode
  • Crop images
  • File preview
  • And more…

Summary

At present that you know how implement PHP file uploads 2 ways, you can easily add this feature to your website or application. If dealing with the scalability, security, and maintenance challenges of hosting your own file upload infrastructure seems too daunting, let Filestack handle it. Also be sure to check out our commodity on AJAX File Uploads as well!

Read More than →

whitefriver97.blogspot.com

Source: https://blog.filestack.com/thoughts-and-knowledge/php-file-upload/

0 Response to "How to Enable File Upload in Php"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel