Ir para conteúdo

POWERED BY:

Arquivado

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

Akssio

diretório remoto

Recommended Posts

To fazendo um site onde o cliente vai poder fazer uploads de fotos onde estas serão gravadas em uma pasta

no servidor remoto e seu nome no banco de dados...

 

A parte do código que indica o diretório está assim:

 

set_time_limit(0);

$diretorio = "http://www.site.com.br/images";

$id_arquivo = "imagem";

$nome_arquivo = $_FILES[$id_arquivo]["name"];

$arquivo_temporario = $_FILES[$id_arquivo]["tmp_name"];

move_uploaded_file($arquivo_temporario, "$diretorio/$nome_arquivo");

 

No FTP já coloquei a permissão CHMOD 777 para poder gravar na pasta "images"...mas continua não gravando. Alguém tem uma explicação??

Me ajudem a encontrar o erro e como concertá-lo??

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta colocar

$diretorio=$_SERVER['DOCUMENT_ROOT'];
Assim ele vai mandar o arquivo pra mesma pasta do script...

 

O problema deve ser o caminho, só é ceito o caminho fisico, tipo "\www\seusite\pasta" no linux, e "c:\algumacoisa\pasta" no windows...

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

logico mano , você vi presiza da uma olhadinha no codigo pra adapita-loPrimeiramente, vamos criar uma tabela no Banco de Dados:

CREATE TABLE imagens (codigo INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,formato VARCHAR(255) NOT NULL,imagem BLOB NOT NULL);

upload.php

<?$caminho = "/caminho/para/a/pasta/"; // Coloque o caminho do servidor para a pasta onde as imagens vao ficar.if(empty($file)) {?><form method="POST">Imagem: <input type="file" name="file"><br>Formato: <select name="formato"><option value="gif">Gif</option><option value="jpeg">Jpg</option></select><br><input type="submit" value="Enviar"></form><?} elseif(!empty($file)) {$arq = $file_name;if(move_uploaded_file($file."/".$arq, $caminho."/".$arq)) {$abre = fopen($caminho."/".$arq, "r");$le = fread($abre, filesize($caminho."/".$arq));fclose($abre);$qr = "INSERT INTO imagens (formato,imagem) VALUES('".$formato."','".addslashes($le)."')";mysql_query($qr) or die(mysql_error());} else {echo "Nao foi possivel enviar a imagem!";}}?>

imagem.php

<?$qr = "SELECT * FROM imagens ORDER BY codigo DESC";$sql = mysql_query($qr);$l = mysql_fetch_array($sql);header("Content-type: image/".$l[formato]);echo stripslashes($l[imagem]);?>

ai vai uma reclamação , gente muda esse sistema de colocar quote , eu sempre to apanhando pra colocar :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe quando me referi a pagina, queria dizer imagem...O que quero dizer, você tem um diretorio imagem hospedado na inetrnet, certo. Seu script de upload esta rodando localmente, na minha opinião fica mais facil você fazer a transferencia da imagem utilizando funções FTP...não o que você fez...De uma lida no link que post no meu outro topico

o script também está no servidor...só ki não dentro da pasta imagens..se eu colocar o script dentro da página 'imagens' fica mais facil??

Compartilhar este post


Link para o post
Compartilhar em outros sites

achei um script com diretorio do site .

eu analisei o codigo e ta bacana , da uma olhada ai e ve se ta funfando .

ta em vermelho aonde você vai ter que escolher em qual pasta vai usar , se você tiver num nivel acima tire o comentario desse codigo $dir_retira="" e comente o $dir_retira="admin/"; , caso nao esteje um nivel acima você deixa como ta e so muda o diretorio admin .

 

<form action="upload_foto.php" method="post" enctype="multipart/form-data">

Envie sua foto para o site! <input type="file" name="foto"><BR>

<input type="submit" value="Enviar Foto!">

</form>

upload_foto.php

if($erro==0) {

//processa e verifica o upload da foto do usuário:

$erro = $config = array();

 

// Prepara a variável do arquivo

$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;

 

// Tamanho máximo do arquivo (em bytes)

$config["tamanho"] = 25000;

 

// Largura máxima (pixels)

$config["largura"] = 96;

 

// Altura máxima (pixels)

$config["altura"] = 96;

 

// 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)$", $arquivo["type"])) {

$erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo</font>";

}

else {

// Verifica tamanho do arquivo

if ($arquivo["size"] > $config["tamanho"]) {

$erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo</font>";

}

 

// Para verificar as dimensões da imagem

$tamanhos = getimagesize($arquivo["tmp_name"]);

 

// Verifica largura

if ($tamanhos[0] > $config["largura"]) {

$erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels</font>";

}

// Verifica altura

if ($tamanhos[1] > $config["altura"]) {

$erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels</font>";

}

}

 

 

// Imprime as mensagens de erro

if (sizeof($erro)) {

/* compensa você deixar direto uma imagem "blank.gif" e quando for salvar se der o erro.. apenas gardar o caminho do arquivo*/

$caminho = pathinfo(__file__);

$imagem_dir = $caminho['dirname']."/fotos/blank.jpg";

foreach ($erro as $err) {

echo " - " . $err . "<BR>";

}

echo "<a href=\"upload_foto.php\">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á (Modifiquei agora ele vai descobrir o arquivo real do do diretório).

Se colocasse do jeito que postei anteriormente daria erro*/

$dir_retira="admin/"; /*coloque se a pasta de destino estiver a um nivel acima. deixe $dir_retira="" caso não este diretório */

$caminho = pathinfo(__file__);

$menos_adm = strlen($caminho['dirname'])- strlen($dir_retira); /* conta quantas strings tem o caminho menos a pasta espeficifaca */

$diretorios = substr($caminho['dirname'], 0, $menos_adm); /* então não pega este ultimo diretório */

$imagem_dir = "$diretorios/fotos/$imagem_nome";

 

// Faz o upload da imagem

move_uploaded_file($arquivo["tmp_name"], $imagem_dir);

$declar = "INSERT INTO `tab_users_temp` (`idt` , `nome` , `nick` , `idade` , `sexo` , `cidade` , `estado` , `pais` , `msn` , `email` , `url` , `foto` , `login` , `senha` , `interesses` ) VALUES ('$idt' , '$nome' , '$nick' , '$idade' , '$sexo' , '$cidade' , '$estado' , '$pais' , '$msn' , '$email' , '$url' , '$imagem_nome' , '$login', '$senha' , '$interesses');";

mysql_db_query ($bd, $declar, $conec);

echo ("<font color=\"#000000\" size=\"1\" face=\"Verdana\">Seu cadastro foi concluído com sucesso. O cadastro passará por uma verificação dos Administradores. Se tudo correto, o cadastro será liberado.<br>O painel de alteração/exclusão de cadastro será liberado em breve.</font>

<p><font color=\"#000000\" size=\"1\" face=\"Verdana\"><a href=\"membros.php\">Clique aqui</a> para ver a pagina de membros.</font></p>");

}

mysql_close ($conexao);

}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não conseguir fazer esse outro jeito..

Este é o código completo ....tentei usar funções FTP

 

 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$arquivo = $_FILES["imagem"];

$arquivo_nome = $arquivo ["name"];

$insertSQL = sprintf("INSERT INTO eventos (imagem, comentario, link) VALUES ('$arquivo_nome', %s, %s)",

GetSQLValueString($_POST["comentario"], "text"),

GetSQLValueString($_POST["link"], "text"));

 

$conx = ftp_connect("ftp.site.com.br","21");

$login = ftp_login ($conx, "site.com.br", "senha");

$chmod_cmd = "CHMOD 0777 ";

$chmod = ftp_site($conx, $chmod_cmd);

$upload = ftp_put($conx, '/image/'.$arquivo_nome, $_FILES["imagem"], FTP_ASCII);

 

 

mysql_select_db($database_noticias, $noticias);

$Result1 = mysql_query($insertSQL, $noticias) or die(mysql_error());

 

$insertGoTo = "sucesso.htm";

if (isset($_SERVER['QUERY_STRING'])) {

$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

$insertGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $insertGoTo));

}

 

mysql_select_db($database_noticias, $noticias);

$query_rseventos = "SELECT * FROM eventos ORDER BY id DESC";

$rseventos = mysql_query($query_rseventos, $noticias) or die(mysql_error());

$row_rseventos = mysql_fetch_assoc($rseventos);

$totalRows_rseventos = mysql_num_rows($rseventos);

?>

 

 

O que está errado.???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe pela demora...é ki deu um problema na mina net!!..é o seguinte...tenho uma página e o próprio cliente vai poder fazer o upload das fotos.Essas fotos através do upload deverá ser gravada na pasta "imagem" no servidor remoto.o caminho da imagem será gravado no banco de dados....para o upload tentei usar funções FTP mas naum deu certo....confere ai encima..!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada naquela parte assim:

 

$upload = ftp_put($conx,'/image/'.$arquivo_nome, $_FILES["imagem"], FTP_ASCII);

 

Este $_FILES["imagem"], esta com o endereço da imagem no pc!

posso usa-lo neste local??

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.