Ir para conteúdo

POWERED BY:

Arquivado

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

thiago_php

upload banco

Recommended Posts

entao to com essa classe de upload so que quando envio o arquivo nao da erro nenhum mas tb nao envia nao sei pra ond ta enviando

 

 

<?php

require_once "class_upload.php";

$upload = new Upload();
$upload->Envia_Arquivo();

?>
<html>
<head>
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data" name="form1">
 <input type="file" name="arquivo">
 <input type="submit" name="Submit" value="Enviar">
</form>
</body>
</html>


class_upload.php

PHP
<?php

class Upload
{
		var $arquivo = "";
		var $erro = array ( "0" => "upload execultado com sucesso!",
												"1" => "O arquivo é maior que o permitido pelo Servidor",
												"2" => "O arquivo é maior que o permitido pelo formulario",
												"3" => "O upload do arquivo foi feito parcialmente",	 
				 "4" => "Não foi feito o upload do arquivo"
										);
 
		function Verifica_Arquivo()
		{
  $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;
  return is_uploaded_file($this->arquivo['tmp_name']) ? true : false;  
		}

		function Envia_Arquivo()
		{
  if($this->Verifica_Arquivo() == true)
  {
		set_time_limit(0);
		$diretorio = "pasta/";
		if(!file_exists($diretorio))
		{
		mkdir($diretorio);
		}	   
	   
		while ( file_exists ( $diretorio.$this->arquivo['name'] ))
		{
		$this->arquivo['name'] = preg_replace ( "/^(.+?)(_?)(\d*)(\.[^.]+)?$/e", "'\$1_'.(\$3+1).'\$4'", $this->arquivo['name']);
		}
	   
		move_uploaded_file($this->arquivo['tmp_name'], $diretorio . $this->arquivo['name']);
		echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$this->arquivo['error']]."</span>";
  }
  elseif( isset($this->arquivo['tmp_name']) )
  {
		echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$this->arquivo['error']]."</span>";
  }
		}
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, eu coloquei uma classe de upload lá na seção de scripts que tem um metodo chamado getFileName. Faz o upload com essa classe, recupera o nome do arquivo atraves deste metodo para uma variavel qualquer e grava no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao nao entendi como usar a classe como passaria os dados do formulario para a classe

 

 

<?php
/*
* Classe Upload
* Executa o upload de arquivos
* @Author = Diego Henrique (diegoholiveira@yahoo.com.br)
*/
class Upload {

	private $file;		// Armazena o arquivo
	private $fileName;	// Armazena o novo nome do arquivo
	private $single;	// Armazena o tipo de upload
	
	/*
	 * Metodo construtor
	 * @param $fieldName = Nome do campo que vai ser recebido
	 */
	public function __construct( $fieldName ) {
		
		// Verifica se existe mais de um arquivo
		$i = 0;
		
		// Verifica se o upload é multiplo
		if (isset($_FILES[$fieldName]['name']) && is_array($_FILES[$fieldName]['name'])) {
			
			$this->single = false;
			
			while (isset($_FILES[$fieldName]['error'][$i]) && $_FILES[$fieldName]['error'][$i] == UPLOAD_ERR_OK) {
				
				$tmp_file[$i]['name']		= $_FILES[$fieldName]['name'][$i];
				$tmp_file[$i]['type']		= $_FILES[$fieldName]['type'][$i];
				$tmp_file[$i]['error']		= $_FILES[$fieldName]['error'][$i];
				$tmp_file[$i]['size']		= $_FILES[$fieldName]['size'][$i];
				$tmp_file[$i]['tmp_name']	= $_FILES[$fieldName]['tmp_name'][$i];
				
				$tmp_names[$i]	= $this->cleanFileName($tmp_file[$i]['name']);
				
				$this->file	 = $tmp_file;
				$this->fileName = $tmp_names;
				
				$i++;
			}
			
		}
		else if (isset($_FILES[$fieldName]['name']) && is_string($_FILES[$fieldName]['name'])) {
			
			$this->single = true;
			
			// Verifica se o arquivo passado é valido
			if ( $_FILES[$fieldName]['error'] == UPLOAD_ERR_OK ) {

				$this->file		= $_FILES[$fieldName];
				$this->fileName = $this->cleanFileName($this->file['name']);

			}

		}

	}
	
	/*
	 * Metodo cleanFileName
	 * Remove acentos, espaços e caracteres especiais
	 * @param $string = string a ser limpa
	 */
	private function cleanFileName( $string ) {
		
		// Converte todos os caracteres para minusculo
		$string = strtolower($string);

		// Remove os acentos
		$string = eregi_replace('[aáàãâä]', 'a', $string);
		$string = eregi_replace('[eéèêë]', 'e', $string);
		$string = eregi_replace('[iíìîï]', 'i', $string);
		$string = eregi_replace('[oóòõôö]', 'o', $string);
		$string = eregi_replace('[uúùûü]', 'u', $string);
		
		// Remove o cedilha e o ñ
		$string = eregi_replace('[ç]', 'c', $string);
		$string = eregi_replace('[ñ]', 'n', $string);
		
		// Substitui os espaços em brancos por underline
		$string = eregi_replace('( )', '_', $string);
		
		// Remove hifens duplos
		$string = eregi_replace('--', '_', $string);
		
		return $string;
		
	}
	
	/*
	 * Metodo upload
	 * Executa o upload
	 * @param $path = caminho onde será salvo o arquivo
	 * @param $replace = indica se o arquivo pode substituir
	 * outro arquivo com o mesmo nome
	 */
	public function upload( $path, $replace = false ) {
		
		// Seta o limite de execução em zero para evitar erros
		set_time_limit(0);
		
		// Verifica se o diretorio passado como parametro existe
		if (!is_dir($path)) {
			@mkdir( $path );
		}
		
		if ($this->single) {
			
			// Verifica se é para substituir o arquivo
			if (!$replace) {
			
				// verifica se é o arquivo existe
				if ( file_exists( sprintf("%s/%s", $path, $this->fileName) )  ) {
					return "O arquivo já existe na pasta indicada!";
				}
				
			}
			
			if (move_uploaded_file( $this->file['tmp_name'], sprintf( "%s/%s", $path, $this->fileName ) )) {
				return true;
			}
			else {
				return "Erro ao fazer o upload do arquivo!";
			}
			
		}
		else {
			
			// Armazena os erros
			$erros = array();
			
			// Verifica se é para substituir o arquivo
			if (!$replace) {
				
				for ($i = 0; $i < count($this->file); $i++) {
					
					// verifica se é o arquivo existe
					if ( file_exists( sprintf("%s/%s", $path, $this->fileName[$i]) )  ) {
						 $erros[] = sprintf(
							 "O arquivo %s já existe na pasta indicada!",
							 $this->fileName[$i]
						 );
					}
					
				}
				
				if (count($erros)) return $erros;
				
			}
			
			for ($i = 0; $i < count($this->file); $i++) {
				
				if (!move_uploaded_file( $this->file[$i]['tmp_name'], sprintf( "%s/%s", $path, $this->fileName[$i] ) )) {
					$erros[] = sprintf(
						"Erro ao fazer o upload do arquivo %s!",
						$this->fileName[$i]
					);
				}

			}

			if (count($erros)) return $erros;
			else return true;

		}

	}
	
	/*
	 * Metodo getFileName
	 * Retorna o nome do arquivo em upload simples
	 * Retorna um vetor com os nomes dos arquivos em uploads multiplo
	 */
	public function getFileName() {
		return $this->fileName;
	}
	
	/*
	 * Metodo getExtension
	 * Retorna a extensão do arquivo
	 * Este metodo só funciona em uploads simples
	 */
	public function getExtension() {
		if ($this->single) return strrchr( $this->fileName, "." );
		else return false;
	}

}



para executar uploads é simples:
CODE
$upload = new Upload("arquivos"); // nome do campo tipo file do formulario
// arquivo voce passa a pasta de destino como primeiro parametro, e como segundo, se o arquivo pode ou não ser substituido
if ($upload->upload("pasta/destino", true)) {
echo "upload feito com sucesso!";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos supor que no seu formulario html, o nome do seu campo do tipo file seja "foto";

 

$upload = new Upload("foto"); // nome do campo tipo file do formulario

// arquivo voce passa a pasta de destino como primeiro parametro, e como segundo, se o arquivo pode ou não ser substituido
if ($upload->upload("pasta/destino", true)) {
	   echo "upload feito com sucesso!";
	   $nome_arquivo = $upload->getFileName(); // recupera o nome do arquivo upado
}

// com o nome do arquivo upado na variavel $nome_arquivo, voce pode guardar ele no banco de dados.

 

entendeu? se não posta ae sua duvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao no meu caso formulario vai ter mais de um campo

 

titulo

sistema operacional

link

arquivo "o arquivo que vai ser enviado"

descricao

 

ai eu vou ter que mover o arquivo pra pasta e gravar os dados no banco

 

ok valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao fui fazer o upload e deu esse erro

 

 

Warning: move_uploaded_file(pasta/ajaxcars.zip) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/interno/public_html/noroeste/menu/upload.php on line 120

 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phplw477x' to 'pasta/ajaxcars.zip' in /home/interno/public_html/noroeste/menu/upload.php on line 120

upload feito com sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

atenção para o erro:

 

Warning: move_uploaded_file(pasta/ajaxcars.zip) [function.move-uploaded-file]: failed to open stream: [b]Permission denied[/b] in /home/interno/public_html/noroeste/menu/upload.php on line 120

 

da permissão de escrita lá que funciona...

Compartilhar este post


Link para o post
Compartilhar em outros sites

uai. voce já tem o arquivo upado numa pasta, recupera o nome do arquivo com aquele metodo getFileName e depois disso voce monta a sua sql ue...

 

tipo:

INSERT INTO arquivos (arquivo, descricao) VALUES ('$arquivo', '$descricao');

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.