santosbio 0 Denunciar post Postado Agosto 19, 2010 Olá pessoal. Estou criando um site para um fotógrafo, e necessito criar um sistema em que o fotógrafo faça o upload de suas fotos e que após esse upload, o cliente tenha acesso às fotos para realizar a escolha das mesmas (as populares "provinhas" das fotos). Procurei na net algum script para que eu possa adaptar, e até agora consegui o seguinte: Script para fazer o upload das fotos: <?php //Diretório aonde ficará os arquivos $dir = "./"; //Extensões permitidas $ext = array("gif","jpg","png"); //Quant. de campos do tipo FILE $campos = 6; //Formulário echo '<form method="post" action="'.$PHP_SELF.'" enctype="multipart/form-data"> Arquivo: <input type="file" name="file[]"> Arquivo: <input type="file" name="file[]"> Arquivo: <input type="file" name="file[]"> Arquivo: <input type="file" name="file[]"> Arquivo: <input type="file" name="file[]"> Arquivo: <input type="file" name="file[]"> <input type="submit" name="submit" value=" OK "> </form>'; //Se for enviado if (isset($_POST['submit'])) { //Obtendo info. dos arquivos $f_name = $_FILES['file']['name']; $f_tmp = $_FILES['file']['tmp_name']; $f_type = $_FILES['file']['type']; //Contar arquivos enviados $cont=0; //Repetindo de acordo com a quantidade de campos FILE for($i=0;$i<$campos;$i++){ //Pegando o nome $name = $f_name[$i]; //Verificando se o campo contem arquivo if ( ($name!="") and (is_file($f_tmp[$i])) and (in_array(substr($name, -3),$ext)) ) { if ($cont==0) { echo "<b>Arquivo(s) enviados: </b>"; } echo $name." - "; //Movendo arquivo's do upload $up = move_uploaded_file($f_tmp[$i], $dir.$name); //Status if ($up==true): echo "<i>Enviado!</i>"; $cont++; else: echo "<i>Falhou!</i>"; endif; echo " "; } } echo ($cont!=0) ? "<i>Total de arquivos enviados: </i>".$cont : "Nenhum arquivo foi enviado!"; } ?> Script para visualizar as fotos enviadas (estilo uma galeria): <?php // extençoes aceitas foreach(array_merge(glob("*.gif"), glob("*.jpeg"), glob("*.jpg"), glob("*.png"), glob("*.JPG"), glob("*.PNG"), glob("*.GIF"), glob("*.JPEG")) as $arquivo ){ echo "<img src='".$arquivo."'<span class='style1'>--</span>"; } ?> Então... precisava fazer o seguinte: Ao fazer o upload, o fotógrafo define o nome da pasta para onde irão as imagens. Após o upload das imagens, o fotógrafo define um login e senha para o acesso da mesma pasta, no estilo de uma galeria de imagens com umas checkbox's para o cliente escolher as fotos que quer comprar. Ao finalizar as escolhas, preciso que o fotógrafo receba o nome das imagens por email, para sua posterior edição e impressão. Faz quase um mês que tô atrás disso, e não consegui nada ainda... não tenho experiência com PHP, mas já me virei com alguns projetos, adaptando os códigos que eu achava na net. Agradeço desde já a atenção de todos. c ya! Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Agosto 19, 2010 Pessoal... achei outro código pra upload, e resolvi utilizar ele. O problema agora é o seguinte: eu preciso, através do formulário de envio de fotos, criar um diretório para abrigar as imagens. O código que estou utilizando é o seguinte: Formulário para upload (e logout da área administrativa): <? include("restringir.php"); ?> <html> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <? echo "<a href=\"logout.php\">Sair</a>"; ?> <BR /> <form action="upload.php" method="post" enctype="multipart/form-data"> Envie sua foto para o site! <input type="file" name="foto"><BR> Pasta do cliente: <input type="text" name="pastacl"><BR> <input type="submit" value="Enviar Foto!"> </form> </body> </html> arquivo upload.php <? $erro = $config = array(); // Prepara a variável do arquivo $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; $pastacl = isset($_POST["pastacl"]) ? $_POST["pastacl"] : ""; // Tamanho máximo do arquivo (em bytes) $config["tamanho"] = 106883; // Largura máxima (pixels) $config["largura"] = 350; // Altura máxima (pixels) $config["altura"] = 180; // Formulário postado... executa as ações if($arquivo) { // Verifica se o mime-type do arquivo é de imagem if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp){:content:}quot;, $arquivo["type"])) { $erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo"; } else { // Verifica tamanho do arquivo if($arquivo["size"] > $config["tamanho"]) { $erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo"; } // Para verificar as dimensões da imagem $tamanhos = getimagesize($arquivo["tmp_name"]); // Verifica largura if($tamanhos[0] > $config["largura"]) { $erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels"; } // Verifica altura if($tamanhos[1] > $config["altura"]) { $erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels"; } } // Imprime as mensagens de erro if(sizeof($erro)) { foreach($erro as $err) { echo " - " . $err . "<BR>"; } echo "<a href=\"foto.html\">Fazer Upload de Outra Imagem</a>"; } // Verificação de dados OK, nenhum erro ocorrido, executa então o upload... else { // Pega extensão do arquivo preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext); // Gera um nome único para a imagem $imagem_nome = md5(uniqid(time())) . "." . $ext[1]; // Caminho de onde a imagem ficará $imagem_dir = "img/" . $pastacl . $imagem_nome; // Faz o upload da imagem move_uploaded_file($arquivo["tmp_name"], $imagem_dir); echo "Sua foto foi enviada com sucesso!"; } } ?> No código acima, tem um trecho onde fala do diretório da imagem. O código é esse: // Caminho de onde a imagem ficará $imagem_dir = "img/" . $pastacl . $imagem_nome;[/b][/b] eu inclui no código a variável $pastacl, com a intenção de criar o diretório, mas creio que não é assim que se faz, já que ao fazer o upload, a imagem fica com o nome que eu defini pra pasta + um nome randômico (pra evitar arquivos com mesmo nome). Peço ajuda aos amigos pra solucionar esse empasse... *.* Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Agosto 20, 2010 Consegui criar o diretório dinamicamente, adicionando o seguinte código no arquivo que postei anteriormente, após declarar a variável $pastacl: // nome do diretório $diretorio = "img/" . $pastacl; // cria o diretório com a permissão 0777 if(mkdir($diretorio, 0777, true)) echo "Diretório criado com sucesso. "; else echo "Não foi possível criar o diretório. "; Porém... como nem tudo são flores... a pasta é criada e o arquivo é upado fora dessa pasta (ficando dentro da pasta "img/"... Onde será que estou errando??? Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Agosto 27, 2010 Fiz mais algumas modificações... retirei a parte que gerava um nome randômico pro arquivo (já que não haverá duplicidade, pois cada cliente terá uma pasta específica). então... o final do arquivo ficou assim: //pegando o nome da imagem $tmp_name = $_FILES["foto"]["tmp_name"][$key]; $name = $_FILES["foto"]["name"][$key]; // Caminho de onde a imagem ficará $imagem_dir = "img"; // Faz o upload da imagem move_uploaded_file($arquivo["name"], "$imagem_dir/$pastacl"); echo "Sua foto foi enviada com sucesso!"; } } ?> mudei também o caminho do move_upload... vi no php.net que dá pra usar ele assim: $ imagem_dir/$ pastacl. Porém, agora a imagem nem aparece no servidor (e no script, acusa que ela foi enviada com sucesso)... E então... alguém consegue me dar uma luz nisso aki??? Compartilhar este post Link para o post Compartilhar em outros sites
cassiano óliver 1 Denunciar post Postado Agosto 27, 2010 dá um echo na varíável para certificar-se que o caminho está correto. $imagem_dir = "img/" . $pastacl . $imagem_nome; echo $imagem_dir;exit; Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Agosto 27, 2010 dá um echo na varíável para certificar-se que o caminho está correto. $imagem_dir = "img/" . $pastacl . $imagem_nome; echo $imagem_dir;exit; Fazendo isso, acusa o caminho "img/"... porém, nem nesse caminho a imagem se encontra... oO ahh... o código q eu tô usando agora não tem mais o ". $ imagem_nome"... é pq eu não quero criar uma pasta pra cada imagem, e sim, uma pra cada pessoa. Compartilhar este post Link para o post Compartilhar em outros sites