8398c9048d
code was modified slightly, so the code differs from the original downloadable 1.9.5 version
204 lines
No EOL
5.3 KiB
PHP
204 lines
No EOL
5.3 KiB
PHP
<?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 = "UploadedFiles/"; // where image will be uploaded, relative to this file
|
|
$download_path = "UploadedFiles/"; // 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("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>
|