<div id="input_file"> <div id="iframe_container"> /*aqui estou passando por parâmetro logo*/ <iframe src="upload.php?imagem=logo" frameborder="0"></iframe> </div> <div id="images_containerlogo"> Logo </div> </div>
upload.php
<?php
error_reporting(E_ALL);
if (isset($_FILES['image']))
{
$ftmp = $_FILES['image']['tmp_name'];
$oname = $_FILES['image']['name'];
$fname = "images/".$_FILES['image']['name'];
if(move_uploaded_file($ftmp, $fname))
{
?>
<html><head>
<script>
var par = window.parent.document;
/*aqui pego por get o parametro*/var images = par.getElementById('images_container<?$_GET['imagem'];?>');
var imgdiv = images.getElementsByTagName('div')[<?=(int)$_POST['imgnum']?>];
var image = imgdiv.getElementsByTagName('img')[0];
imgdiv.removeChild(image);
var image_new = par.createElement('img');
image_new.src = 'resize.php?pic=<?=$oname?>';
image_new.className = 'loaded';
imgdiv.appendChild(image_new);
</script>
</head></html>
<?php
exit();
}
}
?>
<html><head>
<script language="javascript">
function upload()
{
var par = window.parent.document;
// hide old iframe
var iframes = par.getElementsByTagName('iframe');
var iframe = iframes[iframes.length - 1];
iframe.className = 'hidden';
// create new iframe
var new_iframe = par.createElement('iframe');
new_iframe.src = 'upload.php';
new_iframe.frameBorder = '0';
par.getElementById('iframe_container').appendChild(new_iframe);
// add image progress
/*pego o parametro novamente*/var images = par.getElementById('images_container<?$_GET['imagem'];?>');
var new_div = par.createElement('div');
var new_img = par.createElement('img');
new_img.src = 'indicator.gif';
new_img.className = 'load';
new_div.appendChild(new_img);
images.appendChild(new_div);
// send
var imgnum = images.getElementsByTagName('div').length - 1;
document.iform.imgnum.value = imgnum;
setTimeout(document.iform.submit(),5000);
}
</script>
<style>
#file
{
width: 350px;
}
</style>
<head><body><center>
<form name="iform" action="" method="post" enctype="multipart/form-data">
<input id="file" type="file" name="image" onchange="upload<?$_GET['imagem'];?>()" /> /*chamo a pagina com parametro*/
<input type="hidden" name="imgnum" />
</form>
</center></html>resize.php
<?php
if($_GET['pic'])
{
$img = new img('images/'.$_GET['pic']);
$img->resize();
$img->show();
}
class img
{
var $image = '';
var $temp = '';
function img($sourceFile)
{
if(file_exists($sourceFile))
{
$this->image = ImageCreateFromJPEG($sourceFile);
}
else
{
$this->errorHandler();
}
return;
}
function resize($width = 100, $height = 100, $aspectradio = true)
{
$o_wd = imagesx($this->image);
$o_ht = imagesy($this->image);
if(isset($aspectradio)&&$aspectradio)
{
$w = round($o_wd * $height / $o_ht);
$h = round($o_ht * $width / $o_wd);
if(($height-$h)<($width-$w))
{
$width =& $w;
}
else
{
$height =& $h;
}
}
$this->temp = imageCreateTrueColor($width,$height);
imageCopyResampled($this->temp, $this->image,
0, 0, 0, 0, $width, $height, $o_wd, $o_ht);
$this->sync();
return;
}
function sync()
{
$this->image =& $this->temp;
unset($this->temp);
$this->temp = '';
return;
}
function show()
{
$this->_sendHeader();
ImageJPEG($this->image);
return;
}
function _sendHeader()
{
header('Content-Type: image/jpeg');
}
function errorHandler()
{
echo "error";
exit();
}
function store($file)
{
ImageJPEG($this->image,$file);
return;
}
function watermark($pngImage, $left = 0, $top = 0)
{
ImageAlphaBlending($this->image, true);
$layer = ImageCreateFromPNG($pngImage);
$logoW = ImageSX($layer);
$logoH = ImageSY($layer);
ImageCopy($this->image, $layer, $left, $top, 0, 0, $logoW, $logoH);
}
}
?>
Tudo funcionando blz, mas nao consigo fazer algumas modificações para melhor ajuste na página:
Quero colocar um disabled=true no onchange do botão para q nao permitisse mais de um upload, mas nao funciona pois ele chama a função upload() tb.. Ou se alguém souber outra forma para nao permitir mais de um upload agradeço..Apenas comentei a linha q chama a upload.php q fica dentro da função uploar() e funcionou, dessa forma apenas permite um upload.
//new_iframe.src = 'upload.php';
Estou tendo agora o seguinte erro d js:
É nulo ou não é um objeto.
Q acontece quando passo src="upload.php?imagem=logo" no iframe nao reconhece o parametro imagem q estou passando.
Dai dei um alert em par.getElementById('images_container<?$_GET['imagem'];?>') e aparece null, no caso nao esta recebendo o valor do parametro.. como posso fazer isto?
Tentei assim e nao deu certo tb var images = par.getElementById('images_container' + <?$_GET['imagem'];?>);
Edição feita por: Josy, 10/08/2007, 10:36.




















