• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Demoins

Upload de várias fotos em simultaneo

3 mensagens neste tópico

tenho o seguinte código

<?php
$var = !empty($_GET['action']) ? $_GET['action']: init();
switch ($var){
case 'step2': step2(); break;
case 'registar': regista(); break;
}

function init() {
echo '<form method="post" action="?action=step2">
	Quantas imagens quer colocar nesta galeria? <input type="text" name="num" Value="10"><br>
	<input type="submit" value="Começar!"> <input type="reset" value="Apagar Tudo">
</form>';
}

function step2() {
$galerias = opendir("galerias/");
$ngalerias = 0;

while ($galeria = readdir($galerias)) {
	if(($galeria != ".") && ($galeria != ".."))
		++$ngalerias;
}
++$ngalerias;

echo '<form method="post" action="?action=registar&g='.$ngalerias.'" enctype="multipart/form-data">';
for($i = 0; $i < $_POST['num']; ++$i) {
	echo 'Imagem '.($i + 1).': <input type="file" name="file[]"><br>';
}
echo '</p>
<input type="submit" value="Registar"> <input type="reset" value="Apagar Tudo">';
}

function regista() {
mkdir("galerias/galeria".$_GET['g'], 0777);
mkdir("galerias/galeria".$_GET['g']."/slides", 0777);
mkdir("galerias/galeria".$_GET['g']."/thumbs", 0777);

copy("player.swf", "galerias/galeria".$_GET['g']."/player.swf");
copy("index2.html", "galerias/galeria".$_GET['g']."/index.html");

$destino = "galerias/galeria".$_GET['g']."/slides";
$thumb_destino = "galerias/galeria".$_GET['g']."/thumbs";

$xml = fopen("galerias/galeria".$_GET['g']."/slides.xml", "w");
fputs($xml, '<?xml version="1.0" encoding="UTF-8" ?>');
fputs($xml,
'<flash_parameters copyright="socusoftFSMTheme">
    <preferences>
        <golbal>
            <basic_property html_title="" loadStyle="Pie" hideAdobeMenu="false" photoDynamicShow="true" socusoftMenu="false" enableURL="false" startAutoPlay="true" screenfullButton="true"/>
            <music_property path="" stream="true" loop="true"/>
            <description_property enable="true" backgroundColor="0xa0a0a4" backgroundAlpha="30" cssText="a:link{text-decoration: underline;} a:hover{color:#ff0000; text-decoration: none;} a:active{color:#0000ff;text-decoration: none;} .blue {color:#0000ff; font-size:15px; font-style:italic; text-decoration: underline;} .body{color:#ff5500;font-size:20px;}" align="bottom"/>
            <background_property backgroundColor="0x000000" mode="tile"/>
        </golbal>
        <photo>
            <basic_property PhotoMaxWidth="800" PhotoMaxHeight="600" photoBackColor="0xfffbf0" EnablephotoTitle="false" photoTitleColor="0xfffbf0" photoButtonColor="0xfffbf0" photoSpacing="20" photoborder="10"/>
        </photo>
    </preferences>
    <album>');

foreach($_FILES["file"]["error"] as $key => $error) {
	if($error == UPLOAD_ERR_OK) {	
		$tmp_name = $_FILES["file"]["tmp_name"][$key];
		$name = $_GET['g'].'_'.$_FILES["file"]["name"][$key];
		$thumb_name = $_GET['g'].'_thumb_'.$_FILES["file"]["name"][$key];
		$mandar = $destino."/".$name;
		$mandar_thumb = $thumb_destino."/".$thumb_name;

		$tipo = $_FILES["file"]["type"][$key];
		switch($tipo) {
			Case 'image/pjpeg':
				$thumbnail = imagecreatefromjpeg($tmp_name);
				break;
			Case 'image/jpeg':
				$thumbnail = imagecreatefromjpeg($tmp_name);
				break;
			Case 'image/png':
				$thumbnail = imagecreatefrompng($tmp_name);
				break;
			Case 'image/x-png':
				$thumbnail = imagecreatefrompng($tmp_name);
				break;
			Case 'image/gif':
				$thumbnail = imagecreatefromgif($tmp_name);
				break;
		}
		list($width, $height) = getimagesize($tmp_name);
		$newwidth = 100;
		$newheight = 100;
		$resized_img = imagecreatetruecolor($newwidth, $newheight);
		switch($tipo) {
			Case 'image/pjpeg':
				imagecopyresized($resized_img, $thumbnail, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
				imagejpeg($resized_img, $mandar_thumb, 100);
				break;
			Case 'image/jpeg':
				imagecopyresized($resized_img, $thumbnail, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
				imagejpeg($resized_img, $mandar_thumb, 100);
				break;
			Case 'image/png':
				imagealphablending($resized_img, false);
				imagecopyresized($resized_img, $thumbnail, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
				imagealphablending($resized_img, true);
				imagepng($resized_img, $mandar_thumb, 4, PNG_ALL_FILTERS);
				break;
			Case 'image/x-png':
				imagealphablending($resized_img, false);
				imagecopyresized($resized_img, $thumbnail, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
				imagealphablending($resized_img, true);
				imagepng($resized_img, $mandar_thumb, 4, PNG_ALL_FILTERS);
				break;
			Case 'image/gif':
				imagecopyresized($resized_img, $thumbnail, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
				imagegif($resized_img, $mandar_thumb);
				break;
		}
		ImageDestroy ($resized_img);
		ImageDestroy ($thumbnail);

		if(move_uploaded_file($tmp_name, $mandar)) {
			fputs($xml, '<slide jpegURL="thumbs/'.$thumb_name.'" d_URL="slides/'.$name.'" transition="0" panzoom="1" URLTarget="0" phototime="2" url="" title="RS9_1978" width="800" height="535"/>');
		}
		else
			echo 'Não foi possível efectuar o upload do item '.$name;
	}
}
fputs($xml,
'</album>
</flash_parameters>');
echo '<meta HTTP-EQUIV="Refresh" CONTENT="5;URL=galerias/galeria'.$_GET['g'].'/index.html';
}
?>

Se colocar 10 itens de uma vez, funciona tudo bem... O problema é se faço upload de mais simultaneamente, pois aparece-me o seguinte erro:

"Warning: Invalid argument supplied for foreach() in C:\Programas\EasyPHP 2.0b1\www\carlos_ferreira\criar.php on line 61"

Ajudem-me! Estou à nora com isto :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Num fputs, falta uma plica:

$xml = fopen("galerias/galeria".$_GET['g']."/slides.xml", "w");
fputs($xml, <?xml version="1.0" encoding="UTF-8" ?>');

passa a

$xml = fopen("galerias/galeria".$_GET['g']."/slides.xml", "w");
fputs($xml, '<?xml version="1.0" encoding="UTF-8" ?>');

No foreach, experimenta $_FILES[]["error"]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quanto à questão da pelica, ela existe mas não sei porque razão não me grava aqui :S

Agora quanto ao problema, não sei porquê mas agora trabalha sem sequer mexer no código... Talvez seja da versão do php... Em minha casa, onde não funcionava, tinha a versão 5.2.0 e no trabalho, onde funciona, tenho o 5.2.8

Estranho :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora