Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu consegui esse codigo na internet.
Esse codigo é composto por dois arquivos:
a ) responsável pelo redimensionamento da imagem
b ) responsável por mudar o nome, salvar na pasta, e colocar no db.
Só que o codigo estava feito para somente encaminhar 1 arquivo por vez. Eu preciso que ele encaminhe mais arquivos.
Abaixo irei colar o codigo, consegui fazê-lo enviar mais de um arquivo mas só que quando envio aparece diveros erros.
Caso alguém poder me ajudar desde já agradeço.
<?php
set_time_limit(0);
include "funcoes.php";
class Upload
{
var $arquivo = "";
var $erro = array ( "0" => "entrevista inserida com sucesso <br> <br> <a href='entrevistas.php'>Voltar para Entrevistas</a>",
"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_Upload()
{
$this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;
$this->arquivo2 = isset($_FILES['arquivo2']) ? $_FILES['arquivo2'] : FALSE;
$this->arquivo3 = isset($_FILES['arquivo3']) ? $_FILES['arquivo3'] : FALSE;
$this->arquivo4 = isset($_FILES['arquivo4']) ? $_FILES['arquivo4'] : FALSE;
if(!is_uploaded_file($this->arquivo['tmp_name']))
if(!is_uploaded_file($this->arquivo2['tmp_name']))
if(!is_uploaded_file($this->arquivo3['tmp_name']))
if(!is_uploaded_file($this->arquivo4['tmp_name']))
{
return false;
}
$get = getimagesize($this->arquivo['tmp_name']);
$get = getimagesize($this->arquivo2['tmp_name']);
$get = getimagesize($this->arquivo3['tmp_name']);
$get = getimagesize($this->arquivo4['tmp_name']);
if($get["mime"] != "image/jpeg")
{
echo "<span style=\"color: blue; border: solid 1px; \">Essa foto nao é uma imagem valida</span>";
exit;
}
return true;
}
function Envia_Arquivo()
{
if($this->Verifica_Upload()) {
$this->gera_fotos();
return true;
} else {
echo "<span style=\"color: blue; border: solid 1px;\">".$this->erro[$this->arquivo['error']]."</span>";
}
}
function gera_fotos()
{
$diretorio = "../fotos_entrevistas/";
if(!file_exists($diretorio))
{
mkdir($diretorio);
}
$nome_foto = "imagem_".time().".jpg";
$nome_thumb = "thumb_".time().".jpg";
$nome_foto2 = "imagem2_".time().".jpg";
$nome_thumb2 = "thumb2_".time().".jpg";
$nome_foto3 = "imagem3_".time().".jpg";
$nome_thumb3 = "thumb3_".time().".jpg";
$nome_foto4 = "imagem4_".time().".jpg";
$nome_thumb4 = "thumb4_".time().".jpg";
//arquivo
//determino uma resolução maxima e se a imagem for maior ela sera reduzida
reduz_imagem($this->arquivo['tmp_name'], 400, 200, $diretorio.$nome_foto);
//passo o tamanho da thumbnail
reduz_imagem($this->arquivo['tmp_name'], 90, 70, $diretorio.$nome_thumb);
echo "<span style=\"color: black;\">".$this->erro[$this->arquivo['error']]."</span>";
//arquivo2
//determino uma resolução maxima e se a imagem for maior ela sera reduzida
reduz_imagem($this->arquivo2['tmp_name'], 400, 200, $diretorio.$nome_foto2);
//passo o tamanho da thumbnail
reduz_imagem($this->arquivo2['tmp_name'], 90, 70, $diretorio.$nome_thumb2);
//arquivo3
//determino uma resolução maxima e se a imagem for maior ela sera reduzida
reduz_imagem($this->arquivo3['tmp_name'], 400, 200, $diretorio.$nome_foto3);
//passo o tamanho da thumbnail
reduz_imagem($this->arquivo3['tmp_name'], 90, 70, $diretorio.$nome_thumb3);
//arquivo4
//determino uma resolução maxima e se a imagem for maior ela sera reduzida
reduz_imagem($this->arquivo4['tmp_name'], 400, 200, $diretorio.$nome_foto4);
//passo o tamanho da thumbnail
reduz_imagem($this->arquivo4['tmp_name'], 90, 70, $diretorio.$nome_thumb4);
$id=$_POST['id'];
$data=$_POST['data'];
$titulo=$_POST['titulo'];
$subtitulo=$_POST['subtitulo'];
$p1=$_POST['p1'];
$p2=$_POST['p2'];
$p3=$_POST['p3'];
$p4=$_POST['p4'];
$p5=$_POST['p5'];
$p6=$_POST['p6'];
$p7=$_POST['p7'];
$r1=$_POST['r1'];
$r2=$_POST['r2'];
$r3=$_POST['r3'];
$r4=$_POST['r4'];
$r5=$_POST['r5'];
$r6=$_POST['r6'];
$r7=$_POST['r7'];
$datamaior=$_POST['datamaior'];
// conexão com banco de dados para inserir arquivos
$conexao = mysql_connect("","","");
mysql_select_db("visualcerto12");
$sql = "insert INTO entrevistas(numero, id, data, titulo, subtitulo, p1, p2, p3, p4, p5, p6, p7, r1, r2, r3, r4, r5, r6, r7,foto1, menor1, foto2, menor2, foto3, menor3, foto4, menor4, datamaior) Values ('','$id','$data','$titulo','$subtitulo','$p1','$p2','$p3','$p4','$p5','$p6','$p7','$r1','$r2','$r3','$r4','$r5','$r6','$r7','$nome_foto','$nome_thumb', '$nome_foto2','$nome_thumb2', '$nome_foto3','$nome_thumb3', '$nome_foto4','$nome_thumb4','$datamaior')";
$query = mysql_query($sql);
mysql_close($conexao);
}
}
?>Poste quais erros aparecem. O código ficou igual a este que você postou? Se ficar diferente, poste-o também.
Carlos Eduardo
O codigo está enviando as imagens, está redirecionando, está mudando o nome.
O problema é quando eu deixo de enviar uma das 4 imagens, acontecendo as mensagens de erro.
Eu sei que devo fazer um if, mas não estou sabendo como.
Atenciosamente,
André Trindade
>
Poste quais erros aparecem. O código ficou igual a este que você postou? Se ficar diferente, poste-o também.
Carlos Eduardo
>
O codigo está enviando as imagens, está redirecionando, está mudando o nome.
O problema é quando eu deixo de enviar uma das 4 imagens, acontecendo as mensagens de erro.
Eu sei que devo fazer um if, mas não estou sabendo como.
Cara, a cada ação que o script fizer para cada input file, você deve verificar se existe o upload.
Veja, assim como você verificou se existe os campos:
$this->arquivo2 = isset($_FILES['arquivo2']) ? $_FILES['arquivo2'] : FALSE;
$this->arquivo3 = isset($_FILES['arquivo3']) ? $_FILES['arquivo3'] : FALSE;
$this->arquivo4 = isset($_FILES['arquivo4']) ? $_FILES['arquivo4'] : FALSE;
você deve verificar se *$this->arquivo2* (por exemplo) é *false *na hora de executar alguma função em cima dela.
Por exemplo:
if ($this->arquivo2) {
$get2 = getimagesize($this->arquivo2['tmp_name']);
}
Mas veja, o que eu recomendária mesmo é não alterar a classe, pelo menos não para esse propósito. Ao invez disso, faça chamar a classe 4 vezes... se tiver 10 arquivos para subir, faça chamar 10 vezes... se tiver 1 arquivo para subir, faça chamar 1 vez...
Acho que assim você aproveitará melhor o código e não precisará ficar alterando a classe toda hora...
Abraços
Mas como eu faço para chamar a classe várias vezes?
Sou muito novo estou aprendendo, hehee
O que está no action do seu form?
E posta o código onde chama a classe para eu poder ver como pode fazer.
Abraços
Meu formulário está chamando o arquivo enviar.php
<form action="enviar.php" method="POST" enctype="multipart/form-data" name="form1" id="form1">
arquivo enviar.php
<?php require_once('../funcoes/upload/class.upload.php');
require_once('../funcoes/upload/class.upload2.php');
$upload = new Upload();
$upload->Envia_Arquivo();
?>
Ah mais uma questão. Eu tentei fazer para colocar quatro imagens ao mesmo tempo. Quando insiro as quatro dá tudo certo. O problema é quando eu somente insiro uma, ai que dá um monte de erros.
Atenciosmente,
André Trindade