Ir para conteúdo

POWERED BY:

Arquivado

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

tamires

problema com copy, nao funciona

Recommended Posts

ola!

estou querendo montar um script para criar thumbs...

ainda to no começo, nem cheguei nessa parte por que to com um problema com a função copy. uso esse script a meses, sempre deu certo, nao funciona de jeito nenhum!

pior q tá td certinho, comparei c outros q já fiz e tá funcionando...ja renomeei ate os nomes dos campos no banco, alterei a permissão da pasta, mas nem copiar o arquivo está copiando.

 

segue os códigos:

 

upload e cadastro no banco

 

if(isset($_POST["imggd"])) {$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;}if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {  $insertSQL = sprintf("INSERT INTO teste_thumb (nome_img, imagem) VALUES (%s, %s)",					   GetSQLValueString($_POST['textfield'], "text"),					   GetSQLValueString($filePath2DB, "text")); mysql_select_db($database_teste_mh, $teste_mh);  $Result1 = mysql_query($insertSQL, $teste_mh) or die(mysql_error());

form

 

<form action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1" id="form1">  <input type="text" name="textfield" id="textfield" />  <input type="file" name="imggd" id="imggd" />  <input type="submit" name="Submit" value="Submit" />  <input type="hidden" name="MM_insert" value="form1"></form>

ah, esqueci de comentar que o campo "textfield", que seria a legenda q entraria junto com a imagem, tá cadastrando normalmente, o banco está criando a id...mas a imagem não vai.

 

 

aguardo respostas

grata

Tamires

Compartilhar este post


Link para o post
Compartilhar em outros sites

descobri o problema mas isso me trouxe outro problema...dpis de horas, vi que meu register_globals estava setado como "off", coloquei ele com essa configuração após receber várias recomendações e ler várias coisas sobre medidas de segurança e tal.só que acabei de descobrir que esse meu script de upload só funciona com ele setado como "on".que alteracão devo fazer pra ele funcionar em "off"?aguardo respostasgratatamires

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você está enviando o formulário via POST você terá que recuperar as variaveis via $_POST["nome_campo_formulário"].Para arquivos você deve usar $_FILE["nome_campo_formulário"]Se o seu formulário fosse enviado via GET você teri que usar $_GET["nome_campo_formulario"].

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola!

sabe o q eh estranho? ja tnha tentado assim diversas vezes:

 

if(isset($_POST['imggd'])) {$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;}
e n funciono....

 

agora acabei de colocar o register globals em off e usei o $_POST e tentei c $_FILES tb, e nada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da onde tá vindo essa variavel $imggd_name?

 

Onde você está usando $_FILES['imggd'] ?

 

Por acaso não era pra você atribuir o valor de uma para a outra ?

 

 

 

OBS é $_FILES["imggd"] e não $_POST

Compartilhar este post


Link para o post
Compartilhar em outros sites

funciona assim:

 

na pagina insert.php, tenho esse form:

 

<form action="<?php echo $editFormAction; ?>" method="POST" enctype="multipart/form-data" name="form1" id="form1">  <input type="text" name="titulo" id="titulo" />  <input type="file" name="imggd" id="imggd" />  <input type="submit" name="Submit" value="Submit" />  <input type="hidden" name="MM_insert" value="form1"></form>

quando dou o submit, ele processa isso aqui na mesma pagina, grava td no banco e copia o arkivo, e dpis volta pra gal;eria de imagens

 

//uploadif(isset($_POST["imggd"])) { //olha o $_POST aqui aonde n funciona..$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;}//grava no bancoif ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {  $insertSQL = sprintf("INSERT INTO teste_thumb (nome_img, imggd) VALUES (%s, %s)",					   GetSQLValueString($_POST['titulo'], "text"),//olha o $_POST aqui de novo...e esse funciona, grava certinho!					   GetSQLValueString($filePath2DB, "text"));  mysql_select_db($database_teste_mh, $teste_mh);  $Result1 = mysql_query($insertSQL, $teste_mh) or die(mysql_error());  $insertGoTo = "gallery.php";  if (isset($_SERVER['QUERY_STRING'])) {	$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";	$insertGoTo .= $_SERVER['QUERY_STRING'];  }  header(sprintf("Location: %s", $insertGoTo));}

o estranho é que pra testar o problema, tentei fazer um upload num site q fiz a uns 3 meses, e não funciono quando o register_globals estava em off! ai coloquei on e funciono...o codigo ta igualzinho nesse outro site.

n faz sentido...

sera que o problema é o $_POST ou o copy?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá de novo....Primeirotype="file" name="imggd" <--- type file tem que ser capturado como $_FILES["imggd"]( retorna um Array );Aqui ele não reconhecerá essas variaveis pq register_globals ta off$imggd <--Não terá nenhum valor pq você não atribuiu nada pra ele$imggd_name <-- idem$copied = copy($imggd, 'imgs/' . $imggd_name);Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi....tentei assim:

 

$imggd = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";if(isset($imggd)) {$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;}

so q não funciono também...:/ não soube o que fazer com $imggd_name pq pelo que sei, ele pega o nome do arquivo sem o resto do endereço, tentei isso:

 

$imggd = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";if(isset($imggd)) {$copied = copy($imggd, 'imgs/' . $imggd);}if($copied) {$filePath2DB = 'imgs/' . $imggd;}

e isso

$imggd = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";$imggd_name = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";if(isset($imggd)) {$copied = copy($imggd, 'imgs/' . $imggd_name);}if($copied) {$filePath2DB = 'imgs/' . $imggd_name;}

mas nada :/ deu na mesma...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Tamires é como eu já havia citado $_FILES devolve um Array, voce tem que pegar o nome do arquivo veja: $imggd mostrará Array$imggd["name"] mostrará o nome do arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, acabei de pegar uma explicação detalhada sobre isso no php.net, agora tentei isso:

 

$imggd = isset($_FILES["imggd"]) ? $_FILES["imggd"] : "";$imggdn = isset($_FILES["imggd"]["name"]) ? $_FILES["imggd"]["name"] : "";if(isset($imggd)) {$copied = copy($imggd, 'imgs/' . $imggdn);}if($copied) {$filePath2DB = 'imgs/' . $imggdn;}

pelo que entendi, agora a logica está certa, mas não funcionou....

 

depois fiz isso:

 

if(isset($_FILES["imggd"])) {$copy = copy($_FILES["imggd"], 'imgs/' . $_FILES["imggd"]["name"]);}$imgcompleta = 'imgs/' . $_FILES["imggd"]["name"];if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {  $insertSQL = sprintf("INSERT INTO teste_thumb (nome_img, imggd) VALUES (%s, %s)",					   GetSQLValueString($_POST['titulo'], "text"),					   GetSQLValueString($imgcompleta, "text"));  mysql_select_db($database_teste_mh, $teste_mh);  $Result1 = mysql_query($insertSQL, $teste_mh) or die(mysql_error());

funciono em parte. ele está mandando o nome pro banco corretamente, com a pesta certa e td, mas não copia!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce continua mandando um array na Srting origem da função copy, seu programa está funcionando em parte porque você só arrumou uma parte dele. copy( string origem, string destino );$copy = copy($_FILES["imggd"], 'imgs/' . $_FILES["imggd"]["name"]);}o primeiro parametro continua sendo um Arraytente assim:if(isset($_FILES["imggd"])) $copy = copy( $_FILES["imggd"]["name"], 'imgs/' . $_FILES["imggd"]["name"] );obs if para apenas uma linha pode ter suas } ocultadas

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi eu não posso mandar isso como origem:$_FILES["imggd"]so q ai ele n enviaria so o nome do arquivo?tentei fazer isso q você disse if(isset($_FILES["imggd"]))$copy = copy( $_FILES["imggd"]["name"], 'imgs/' . $_FILES["imggd"]["name"] );mas nd :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca mexi com uploads, mas olhando em um tutorial na net

 

http://www.criarweb.com/artigos/171.php

 

percebi que para alocar o arquivo é usada a função

 

move_uploaded_file não ví essa função no seus scripts, ela é que determina o local onde o arquivo ficará

 

$HTTP_POST_FILES creio que é igual ao $_FILE

 

pelo que eu vi no arquivo ficaria assim no lugar do copy:

 

move_uploaded_file($_FILES['imggd']['tmp_name'], 'imgs/' . $_FILES["imggd"]["name"] );

Compartilhar este post


Link para o post
Compartilhar em outros sites

aeeee funciono, funciono :)valeu mesmo pela ajuda e pela paciência, hehe. =o)td isso pq eu n tinha desligado o register_globals antes! ai tava fazendo td diferente :/ funcionava mas é melhor deixa-lo desligado...msm pq no php6 nao vai ter mais!abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

AAAAllleeeuuuiiiaaa Irmão, viu não é tão difícil, só um pouco de pesquisa e, no final das contas eu acabei aprendendo a fazer um upload também( nunca tinha feito nada relacionado a 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.