I have shown you how to create a simple PHP file that will help you to upload a file into a server a few weeks ago. But if you take a look at the post a few weeks ago, you will realise that the output that you are getting after a successful upload isn't very useful at all. Hence, I have made some minor changes to the PHP file so that you will be getting an output in xml format.
<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>And a simple PHP file that will handle all the uploading...
<?php //Header for xml file header ("Content-Type:text/xml"); //Maximum filesize that can be uploaded through this file $filesize = 1000; //The folder that all the uploads will be place in $folderName = "uploads/"; $output = ""; // detect slash/backslash nomenclature dirname $path = dirname( __FILE__ ); $slash = '/'; strpos( $path, $slash ) ? '' : $slash = '\\'; define( 'BASE_DIR', $path . "/" ); $dirPath = BASE_DIR . $folderName; // folder path //If the filesize of the file is smaller than the maximum filesize if ($_FILES["file"]["size"] < $filesize) { //If there is an error if ($_FILES["file"]["error"] > 0) { //Create a xml node with the name of 'error' and write the type of error into the node $output = createDataXMLNode("error",$_FILES["file"]["error"]); }else{ //Display more info about the uploaded file //Create a xml node with the name of 'name' and write the file name into the node $output = createDataXMLNode("name",$_FILES["file"]["name"]); //Create a xml node with the name of 'type' and write the file type into the node $output .= createDataXMLNode("type",$_FILES["file"]["type"]); //Create a xml node with the name of 'size' and write the file size into the node $output .= createDataXMLNode("size",($_FILES["file"]["size"] / 1024) . " Kb"); //We don't need the info of the temp file. //echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; //If the folder hasn't been created yet, create it now if(!is_dir($dirPath)) mkdir($dirPath,0777); //If the file already exist if (file_exists($dirPath . $_FILES["file"]["name"])) { //Create a xml node with the name of 'error' and indicate that a similar file has exists into the node $output = createDataXMLNode("error",$_FILES["file"]["name"]." file exist"); }else{ //Copy the uploaded file into the specified folder move_uploaded_file($_FILES["file"]["tmp_name"], $dirPath . $_FILES["file"]["name"]); //Create a xml node with the name of 'path' and write the file path into the node $output .= createDataXMLNode("path", removeFileName(). $folderName . $_FILES["file"]["name"]); } } }else{ //Create a xml node with the name of 'error' and write 'Invalid file' into the node $output = createDataXMLNode("error","Invalid file"); } //Create a xml node with the name of 'file' and write all the values of $output into the node echo createNormalXMLNode("file",$output); //Function for creating a Generic XML node function createNormalXMLNode($name,$value){ return "<" . $name . ">" . $value . "</" . $name . ">"; } //Function for creating a normal XML node that contains some values that might have illegal characters function createDataXMLNode($name,$value){ return "<" . $name . "><![CDATA[" . $value . "]]></" . $name . ">"; } //Function to get the url of the current page function curPageURL() { $pageURL = 'http'; if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["HTTP_HOST"].":"; $pageURL .= $_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]; } return $pageURL; } //Function to get the url of the current page and remove the filename of this page function removeFileName(){ $pageURL = curPageURL(); $pieces = explode("/", $pageURL); $piecesLength = count($pieces); $pageURL = ""; for ( $counter = 0; $counter < ($piecesLength - 1); $counter ++) { $pageURL = $pageURL. $pieces[$counter]."/"; } return $pageURL; } ?>
Note: after you have uploaded a file, you will realise that the output looks kinda strange. This is because I'm using a free web hosting services and it is adding some extra lines of codes to my output. But if you look at my source codes, you can easily find a neatly formatted xml in the output.
* Click here to view the demo of this example:
^ Click here for the source files of this demo.
~ Click here for the posts related to PHP Simple file upload.
No comments:
Post a Comment