| <?php |
| // summary |
| // Test file to handle image uploads (remove the image size check to upload non-images) |
| // |
| // This file handles both Flash and HTML uploads |
| // |
| // NOTE: This is obviously a PHP file, and thus you need PHP running for this to work |
| // NOTE: Directories must have write permissions |
| // NOTE: This code uses the GD library (to get image sizes), that sometimes is not pre-installed in a |
| // standard PHP build. |
| // |
| require("cLOG.php"); |
| function findTempDirectory() |
| { |
| if(isset($_ENV["TMP"]) && is_writable($_ENV["TMP"])) return $_ENV["TMP"]; |
| elseif( is_writable(ini_get('upload_tmp_dir'))) return ini_get('upload_tmp_dir'); |
| elseif(isset($_ENV["TEMP"]) && is_writable($_ENV["TEMP"])) return $_ENV["TEMP"]; |
| elseif(is_writable("/tmp")) return "/tmp"; |
| elseif(is_writable("/windows/temp")) return "/windows/temp"; |
| elseif(is_writable("/winnt/temp")) return "/winnt/temp"; |
| else return null; |
| } |
| function trace($txt, $isArray=false){ |
| //creating a text file that we can log to |
| // this is helpful on a remote server if you don't |
| //have access to the log files |
| // |
| //echo($txt."<br/>"); |
| $log = new cLOG("../resources/upload.txt", false); |
| //$log->clear(); |
| if($isArray){ |
| $log->printr($txt); |
| }else{ |
| $log->write($txt); |
| } |
| } |
| function getImageType($filename){ |
| return strtolower(substr(strrchr($filename,"."),1)); |
| } |
| trace("---------------------------------------------------------"); |
| trace("TmpDir:".findTempDirectory()); |
| // |
| // |
| // EDIT ME: According to your local directory structure. |
| // NOTE: Folders must have write permissions |
| // |
| $upload_path = "../resources/"; // where image will be uploaded, relative to this file |
| $download_path = "../resources/"; // same folder as above, but relative to the HTML file |
| |
| // |
| // NOTE: maintain this path for JSON services |
| // |
| require("../../../dojo/tests/resources/JSON.php"); |
| $json = new Services_JSON(); |
| |
| // |
| // Determine if this is a Flash upload, or an HTML upload |
| // |
| // |
| |
| // First combine relavant postVars |
| $postdata = array(); |
| $data = ""; |
| foreach ($_POST as $nm => $val) { |
| $data .= $nm ."=" . $val . ","; |
| $postdata[$nm] = $val; |
| } |
| |
| $fieldName = "flashUploadFiles";//Filedata"; |
| |
| if( isset($_FILES[$fieldName])){ |
| // |
| // If the data passed has $fieldName, then it's Flash. That's the default fieldname used. |
| // |
| trace("returnFlashdata.... "); |
| |
| trace(""); |
| trace("ID:"); |
| trace($_POST['testId']); |
| |
| trace("Flash POST:"); |
| trace($_POST, true); |
| |
| trace("POSTDATA:"); |
| trace($postdata, true); |
| |
| trace("GET:"); |
| trace($_GET, true); |
| |
| trace("FILES:"); |
| trace($_FILES[$fieldName], true); |
| |
| trace("REQUEST:"); |
| trace($_REQUEST, true); |
| |
| |
| |
| |
| |
| $returnFlashdata = true; |
| $m = move_uploaded_file($_FILES[$fieldName]['tmp_name'], $upload_path . $_FILES[$fieldName]['name']); |
| $name = $_FILES[$fieldName]['name']; |
| $file = $upload_path . $name; |
| list($width, $height) = getimagesize($file); |
| $type = getImageType($file); |
| trace("file: " . $file ." ".$type." ".$width); |
| // Flash gets a string back: |
| |
| $data .='file='.$file.',name='.$name.',width='.$width.',height='.$height.',type='.$type; |
| if($returnFlashdata){ |
| trace("returnFlashdata"); |
| trace($data, true); |
| echo($data); |
| return $data; |
| } |
| |
| |
| |
| |
| }elseif( isset($_FILES['uploadedfile']) ){ |
| // |
| // If the data passed has 'uploadedfile', then it's HTML. |
| // There may be better ways to check this, but this is just a test file.$returnFlashdata = false; |
| // |
| $m = move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $upload_path . $_FILES['uploadedfile']['name']); |
| trace("moved:".$m); |
| trace("Temp:".$_FILES['uploadedfile']['tmp_name']); |
| |
| |
| |
| |
| trace("HTML single POST:"); |
| trace($_POST, true); |
| |
| $name = $_FILES['uploadedfile']['name']; |
| $file = $upload_path . $name; |
| $type = getImageType($file); |
| list($width, $height) = getimagesize($file); |
| trace("file: " . $file ); |
| $ar = array( |
| 'file' => $file, |
| 'name' => $name, |
| 'width' => $width, |
| 'height' => $height, |
| 'type'=> $type |
| ); |
| $postdata['file'] = $file; |
| $postdata['name'] = $name; |
| $postdata['width'] = $width; |
| $postdata['height'] = $height; |
| $postdata['type'] = $type; |
| |
| }elseif( isset($_FILES['uploadedfile0']) ){ |
| // |
| // Multiple files have been passed from HTML |
| // |
| $cnt = 0; |
| $ar = array(); |
| trace("HTML multiple POST:"); |
| trace($_POST, true); |
| |
| while(isset($_FILES['uploadedfile'.$cnt])){ |
| $moved = move_uploaded_file($_FILES['uploadedfile'.$cnt]['tmp_name'], $upload_path . $_FILES['uploadedfile'.$cnt]['name']); |
| if($moved){ |
| $name = $_FILES['uploadedfile'.$cnt]['name']; |
| $file = $upload_path . $name; |
| $type = getImageType($file); |
| list($width, $height) = getimagesize($file); |
| trace("file: " . $file ); |
| $ar[] = array( |
| 'file' => $file, |
| 'name' => $name, |
| 'width' => $width, |
| 'height' => $height, |
| 'type'=> $type |
| ); |
| |
| $postdata['file'] = $file; |
| $postdata['name'] = $name; |
| $postdata['width'] = $width; |
| $postdata['height'] = $height; |
| $postdata['type'] = $type; |
| } |
| $cnt++; |
| } |
| |
| }elseif(isset($_GET['rmFiles'])){ |
| trace("DELETING FILES" . $_GET['rmFiles']); |
| $rmFiles = explode(";", $_GET['rmFiles']); |
| foreach($rmFiles as $f){ |
| if($f && file_exists($f)){ |
| trace("deleted:" . $f. ":" .unlink($f)); |
| } |
| } |
| |
| }else{ |
| trace("IMROPER DATA SENT... $FILES:"); |
| trace($_FILES); |
| } |
| |
| //HTML gets a json array back: |
| //$data = $json->encode($ar); |
| $data = $json->encode($postdata); |
| trace($data); |
| // in a text field: |
| ?> |
| <textarea><?php print $data; ?></textarea> |