cacert-testmgr/external/ZendFramework-1.9.5/externals/dojo/demos/uploader/UploadFile.php

204 lines
5.3 KiB
PHP
Raw Permalink Normal View History

<?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>