Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

visitante_php

não sei fazer o ini_set funcionar

Recommended Posts

estou usando esse codigo

 

 

public function __construct( $file )
	{
		$this->files = isset( $_FILES[$file] ) ? $_FILES[$file] : false;
		ini_set('upload_tmp_dir','c:/wamp/tmp/');
		chmod('c:/wamp/tmp/',0777);

	}

 

mas quando tento usar algum arquivo para esta pasta, o arquivo nao sobe para esta pasta....nem para a pasta temporaia do windows....

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois eh beraldo...eu criei uma classe de upload e me esculacharam aki...to refazendo ela, ela upa, verifiac as extensoes direitinho....at como você me indicou uma vez pelo mimetype, verifica o tamanho doarquivo...porem nao redimensiona as imagens....pq nao esta acessando os arquivos temporarios....eu dou um print_r e mostra as informacoes do arquivo...mas quando vou verificar os arquivos temporarios q indica o script, nao esta la...nem ini_set ta funcaodo, no php.ini o valor esta o esmo do script.... =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funciona mesmo tirando esse ini_set()?

Verifique se file_upload está em On. Também há o problema de exceder o tamanho máximo permitido por post_max_size e upload_max_filesize.

 

Verifique o valor de $_FILES['arquivo']['error'], onde "arquivo" é o nome do campo.

 

http://www.php.net/manual/pt_BR/features.f...load.errors.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu coloquei o ini_set justamente pq o php.ini nao tava funfando isso...o file upload esta on...e o $_FILES['arquivo'][error] da 0, ou seja, foi feito o upload....sera pq esta em ambiente win?

Compartilhar este post


Link para o post
Compartilhar em outros sites

execute phpinfo() e procure onde está escrito "upload_tmp_dir"

 

lá você verá o real caminho dos arquivos "uploadeados"

Compartilhar este post


Link para o post
Compartilhar em outros sites

funciona normalmente.....com a classe ou so a funcao, nessa classe tem 4 metodos, um para upar, outro para verificar as extensoes....outro para verificar o tamanho maximo e outro para redimensionar a imagem, todos funcionam exceto esta ultima funcao, pq nao encontra o arquivo temporario.....(para beraldo e amigso q me ajudam)

 

 

outra coisa, alguem mudou o titulo, mas tipo...eu sei sim fazer o ini_set funcionar...sei pra q serve.... mais isso ja esta virando complo....varios de meus topicos foram apagados sem notificacao 1 ano atras....depois me esculacham feito cachorro....eu keria sabe o pq...achei q o forum fosse uma comunidade de colaboracao....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for feito redimensionaamento, não precisa usar uma função para mover a imagem e outra para redimensioná-la. Chame somente a função para redimensioná-la, criando a imagem a partir do caminho temporário. Por exemplo:

 

$im = imagrecreatefromjpeg($_FILES['imagem']['tmp_name']);

Aí é só usar imagejpeg() para salvar a imagem no diretório desejado.

 

 

Provavelmente o método não encontra a imagem pois ela já foi movida.

 

 

 

Quanto ao título do tópico, provavelmente o anterior não condizia com a dúvida, por isso foi editado. Uma boa prática é pensar num título auto-descritiva para o tópico antes de postá-lo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, vou postar aki minha classe completa, mas so pq você se preocupa em ajudar.....

 

eu to usando estas funcoes.....

 

essa classe esta como antes de eu tentar usar o ini_set para setar o direotorio temporario....

 

 

<?php

/**
 * Classe para upload 
 * @version 1.0
 *
 */
class Upload{
	
	protected $file;
	private   $execute;
	protected $dir;
	protected $tipo;
	protected $creatfrom;
	protected $modo;
	public	$ext = array();
	public	$resize;
	
	/**
	 * Verifica se foi enviado algum arquivo
	 *
	 * @param String $file Nome do campo que envia o arquivo
	 */
	public function __construct( $file )
	{
		$this->files = isset( $_FILES[$file] ) ? $_FILES[$file] : false;
		
	}
	
	/**
	 * Seta um diret�rio para o upload
	 *
	 * @param String $dir Diretorio para o upload
	 */
	public function setDir( $dir )
	{
		$this->dir = $dir;
	}
	
	/**
	 * Obt�m o diret�rio para o upload
	 *
	 * @return 
	 */
	protected function getDir( )
	{
		return $this->dir;
	}
	
	
	/**
	 * Obt�m o tipo do arquivo
	 *
	 * @return Retorna o tipo do arquivo
	 */
	public function getTipo( ){
		return $this->files['type'];
	}
	
	/**
	 * Retorna quais m�todos usar em cada tipo de imagem
	 *
	 * @return 
	 */
	protected function getImageInfo( ){
		$type = explode( '/' , $this->files['type']);
		if( $type['0'] == 'image' )
		{
			list( $this->imageinfo['w'] , $this->imageinfo['h'] , $this->imageinfo['type'] ) = getimagesize( $this->files['tpm_name'] );
		}
		return $this->imageinfo;
	
	}
	
	/**
	 * Fun��o para obter o nome e extens�o do arquivo para renomeamento
	 *
	 * @return Retorna nome e extens�o do arquivo
	 */
	public function getName( ){
		$this->name = explode( '.' , $this->files['name'] );
		return $this->name;
		
	}
	
	
	/**
	 * Obt�m o tamanho do arquivo em bytes
	 *
	 * @return unknown
	 */
	protected function getPeso( ){
		return $this->files['size'];
	}
	
	
	/**
	 * Verifica se o arquio tem o tamanho do permitido
	 *
	 * @param Integer $peso tamanho do arquivo em bytes
	 * @return unknown
	 */
	public function setPeso( $peso )
	{
		$this->peso = ( $this->files['size'] <= $peso ) ? true : false;
		return $this->peso;
	}

	/**
	 * Renomeia o arquivo
	 *
	 * @param Integer $modo Modo de renomeamento
	 * @return unknown
	 */
	public function Rename( $modo = 0 )
	{
		$this->getName( );
		$this->modo = ( int ) $modo;
		switch( $this->modo )
		{
			case 0:
				$this->rename = implode( "." , $this->name['1'] );
			break;
			
			case 1:
				$this->rename = date( "d_m_Y_H_i_s" ) . "." . $this->name['1'];			
			break;
			
			case 2:
				$this->rename = "thumb_" . $this->name['0'] . "." . $this->name['1'];
			break;
			
			case 3:
				$this->rename = "thumb_" . date( "d_m_Y_H_i_s" ) . "." . $this->name['1'];
			break;
			
			case 4:
				$this->rename = uniqid( md5( $this->name['0'] ) ) . "." . $this->name['1'];
			break;
		}
		return $this->rename;
	}
	
	
	/**
	 * Seta uma nova dimens�o
	 *
	 * @param Integer $w Altura em pixels
	 * @param Integer $h Largura em pixels
	 */
	public function setTamanho( $w, $h )
	{
		$this->dimension['w'] = ( int ) $w;
		$this->dimension['h'] = ( int ) $h;
	}
	
	
	/**
	 * Obt�m as novas dimens�es
	 *
	 * @return unknown
	 */
	protected function getNewDimensions( )
	{
		return $this->dimension;
	}
	
	/**
	 * Seta as extensao de arquivo permitido
	 *
	 * @param Array $ext extensoes de arquivo permitidos
	 */

	public function setExtAllowed( $ext = array( ) )
	{
		$this->ext = $ext;
		return $this->ext;
	}
	
	/**
	 * Retorna true se a extens�o for permitida, false se n�o for permitida
	 *
	 * @return unknown
	 */
	protected function getExtAllowed( )
	{
		$this->getName( );
		$this->allowed = in_array( $this->name['1'] , $this->ext ) ? true : false;
		return $this->allowed;
	}
	
	/**
	 * Indica se o arquivo deve ser redimensionado ou nao, no caso de imagens.
	 *
	 * @param Boolean $resize
	 */
	public function setResize( $resize = false )
	{
		$this->resize = $resize;
	}
	
	/**
	 * Retorna true se for setado para redimensionar, false caso n�o for para redimensionar.
	 *
	 * @return unknown
	 */
	protected function getResize( )
	{
		return $this->resize;
	}
	
	/**
	 * Redimensiona e faz o upload.
	 *
	 */
	protected function Resize( )
	{
		if ( $this->dimension['w'] && ( $this->imageinfo['w'] < $this->imageinfo['h'] ) )
		{
			$this->w2 = ( $this->dimension['h'] / $this->imageinfo['h'] ) * $this->imageinfo['w'];
		}
		else
		{
			$this->h2 = ( $this->dimension['w'] / $this->imageinfo['w'] ) * $this->imageinfo['h'];
		}
		$this->imagem_p = imagecreatetruecolor( $this->dimension['w'] , $this->dimension['h'] );
			
		switch( $this->imageinfo['type'] )
		{
			case 'GIF':
				$this->imagem = imagecreatefromgif( $this->files['tpm_name'] );
				break;
			case 'JPG':
				$this->imagem = imagecreatefromjpeg( $this->files['tpm_name'] );
				break;
			case 'PNG':
				$this->imagem = imagecreatefrompng( $this->files['tpm_name'] );
				break;
		}

		imagecopyresampled( $this->imagem_p, $this->imagem, 0, 0, 0, 0, $this->dimension['w'], $this->dimension['h'] , $this->w2, $this->h2 );
			
		imagejpeg( $this->imagem_p, $this->dir."/".$this->rename, 100 );
			
   }
	
	/**
	 * Executa o upload
	 *
	 */
	public function Execute( )
	{
		if( $this->files['name'] )
		{
			if( $this->resize )
			{
				$this->getExtAllowed( );
				if( $this->peso )
				{
					 if( $this->allowed )
					 {
					 	$this->getNewDimensions( );
					 	$this->getImageInfo( );
					 	$this->Resize( );
					 }
					 else 
					 {
						  echo 'Extensao de arquivo nao permitida!';
					 }
				
				}
				else
				{
					 echo 'Arquivo com peso acima do permitido!';
				}
			}
			else 
			{
			$this->getExtAllowed( );
			if( $this->peso )
			{
				if( $this->allowed )
				{
					move_uploaded_file( $this->files['tmp_name'] , $this->dir.'/'.$this->rename );
				}
				else 
				{
					echo 'Extensao de arquivo nao permitida!';
				}
				
			}
			else
			{
				echo 'Arquivo com peso acima do permitido!';
			}
		}
	}
	
	}
}

 

 

 

quanto ao titulo insinuar q uma pessoa nao saiba usar uma funcao, sendo q esta está criando classes, eh sacanagem.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz esta alteracao q você citou e nada

 

so apareceu este erro

 

Notice: Undefined property: Upload::$imagem in C:\wamp\www\ajax\upload.class.php on line 241

 

Notice: Undefined property: Upload::$w2 in C:\wamp\www\ajax\upload.class.php on line 241

 

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in C:\wamp\www\ajax\upload.class.php on line 241

linha 241

 

imagecopyresampled( $this->imagem_p, $this->imagem, 0, 0, 0, 0, $this->dimension['w'], $this->dimension['h'] , $this->w2, $this->h2 );

 

so esta criando imagem em preto e com os tamanhso definidos nos metodos...eh q o arquivo temporario nao esta sendo criado na pasta temporaria do servidor...esse eh o erro....

Compartilhar este post


Link para o post
Compartilhar em outros sites

agradeço muito sua dica do phpclasses, mas eu to tentando criar a minha proria....

 

 

caso ajude, este eh o formulario....

 

<?php

/**
 * @author
 * @copyright 2008
 */
include('upload.class.php');
$subir = new Upload('arquivo');
$subir->Rename(4);
$subir->setExtAllowed(array('jpeg','gif','bmp','jpg'));
$subir->setResize(true);
$subir->setTamanho(300,300);
$subir->setPeso(46546354567);
$subir->setDir('teste');
$subir->Execute();

?><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <label>
	<input type="file" name="arquivo" id="arquivo" />
  </label>
  <label>
	<input type="submit" name="button" id="button" value="Submit" />
  </label>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

igor sobre sua reclamação acima

pois eh beraldo...eu criei uma classe de upload e me esculacharam aki

 

nao é bem assim, porque todo mundo aqui tenta ajudar, e se falaram(como eu falei) que sua classe tava ruim é porque tava mesmo, e a intenção era fazer você melhorar, e aprender coisas novas, e nao apenas criticar, sei que tem gente que quando cria algo e alguem critica é a mesma coisa que chamar seu filho de feio, muita gente se ofende

 

por isso que eu ate evito postar muitas vezes, porque sei que tem gente que nao gosta de ouvir que seu trabalho ta mal feito ou é gambiarra, mas é a verdade, o forum é pra tirar duvidas e todos aprender a cada dia, evoluir, você gostaria que quando você posta-se algum projeto para avaliar e ninguem critica-se nada? ou ninguem ligaria em apontar uma falha?

 

entao nao leve pro lado pessoal, estamos aqui pra ajudar.

 

outra coisa eu que mudei seu titulo e a intenção nao foi mostrar que você nao sabe usar a função e sim como o beraldo falou

 

porque muitas vezes o pessoal posta tipo "O PHP nao funciona direito", "A Função do PHP ta com bug"

e claro que isso nao é verdade, nao é o PHP que ta com problema nem a função e sim o que o cara ta fazendo que ta errado, só que muitas vezes tem gente que faz um script e nao funciona, ja acha que é o PHP, o windows, mysql mas nunca o proprio script.

 

quando você postou o titulo "ini_set nao funciona", só mudei o titulo porque na verdade a função ini_set funciona do jeito que ela foi criada pra funcionar

 

mas beleza só esclareci para evitar mal entendido e você pensar que estamos contra você, mas nao é isso

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo....como assim, eu a fiz uma vez e declarei todas as variaveis, era umas 21...ae disseram q eram muitas......

 

Fabyo, eu aceito critica, mas veja criticar eh uma coisa... e esculachar eh outra...se eu nao esperasse critica, eu nao a tinha colocado para avaliacao de pessoas muito mais experientes do q eu....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao mas pelo menos nao foi minha intenção esculachar, as vezes se tivesse falado apenas sua classe ta ruim faça outra de novo, você ate aceitaria mas nao entenderia onde errou e o que precisa melhorar, dai se fala item por item onde esta errado , pode ter parecido que você achou que estavamos esculachando sua classe e nao é isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.