Ir para conteúdo
Fórum Script Brasil
  • 0

Erro ao copiar arquivo


rfrancisco

Pergunta

Este é meu form:

<?php

include ("conn.php");

echo "<form method=\"POST\" action=\"upload.php\" enctype=\"multipart/form-data\">";

echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"200000\">";

echo "<p>";

echo "Imóvel:";

echo "<select name=\"codigo\">";

$sql = mysql_query("SELECT * FROM imoveis");

while($dados = mysql_fetch_array($sql)){

echo "<option selected='selected' value='".$dados['codigo']."'>".$dados['codigo']."</option>";

}

echo "</select>";

echo "</p>";

echo "<p align=\"center\">Arquivo 1: <input type=\"file\" name=\"arquivo1\" size=\"30\"></p>";

echo "<p align=\"center\">Arquivo 2: <input type=\"file\" name=\"arquivo2\" size=\"30\"></p>";

echo "<p align=\"center\">Arquivo 3: <input type=\"file\" name=\"arquivo3\" size=\"30\"></p>";

echo "<p align=\"center\">Arquivo 4: <input type=\"file\" name=\"arquivo4\" size=\"30\"></p>";

echo "<p align=\"center\">Arquivo 5: <input type=\"file\" name=\"arquivo5\" size=\"30\"></p>";

echo "<p align=\"center\"><input type=\"submit\" value=\"Enviar arquivos\"></p>";

echo "</form>";

E este o script que processa o form:

<?

set_time_limit (0);

include 'conn.php';

$imovel = $_POST['codigo'];

$pasta = "photos";

for ($i=1 ; $i<=5 ; $i++)

{

$id_arquivo = "arquivo".$i;

$erro = FALSE;

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

$tamanho_arquivo = $_FILES[$id_arquivo]['size'];

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

if (!empty ($nome_arquivo))

{

if ($sobrescrever == "não" && file_exists("$pasta/$imovel/$nome_arquivo"))

{

$erro = TRUE;

echo "Arquivo $nome_arquivo já existe.";

}

if (($limitar_tamanho == "sim") && ($tamanho_arquivo > $tamanho_bytes))

{

$erro = TRUE;

echo "Arquivo $nome_arquivo deve ter no máximo $tamanho_bytes bytes.";

}

$ext = strrchr($nome_arquivo,'.');

if ($limitar_ext == "sim" && !in_array($ext,$extensoes_validas))

{

$erro = TRUE;

echo "Extensão do arquivo $nome_arquivo inválida para upload.";

}

if(!$erro && move_uploaded_file($arquivo_temporario, "$pasta/$imovel/$nome_arquivo"))

echo "<p align=center>O upload do arquivo <b>$nome_arquivo</b> foi concluído com sucesso.</p>";

else

echo "<p align=center>O arquivo $nome_arquivo não pôde ser copiado para o servidor.</p>";

}

}

?>

Os arquivos não estão chegando no servidor, recebo o seguinte erro:

Warning: move_uploaded_file(photos/1/apartamento2.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/httpd/vhosts/algumacoisa.org/httpdocs/bqimoveis/upload.php on line 31

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpIavSwd' to 'photos/1/apartamento2.jpg' in /home/httpd/vhosts/algumacoisa.org/httpdocs/bqimoveis/upload.php on line 31

O arquivo apartamento2.jpg não pôde ser copiado para o servidor.

Editado por rfrancisco
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Eu olhei, não têm erro...

Eu tinha um script que renomeava o nome da imagem e copiava por move uploaded...

Mas tive que alterar umas coisas na página e não deu mais pra usar...

Esse aí também usa move uploaded, e é provavél que o erro seja na função...

Vou mudar pra copy... Se funcionar eu posto...

Link para o comentário
Compartilhar em outros sites

  • 0

Tenho a função funcionando, mas recebo erro ao fazer uptade com novas imagens, porque a função não permite gravar em cima.

if(!$erro && copy($arquivo_temporario, "$pasta/$imovel/$nome_arquivo")) {

if(file_exists("$pasta/$imovel/$nome_arquivo"));

echo "<p align=center>O upload do arquivo <b>$nome_arquivo</b> foi concluído com sucesso.</p>";

$sql="UPDATE imoveis SET $id_arquivo ='$pasta/$imovel/$nome_arquivo' WHERE codigo='$imovel'";

$exe_update = mysql_query($sql) or die("Error" . mysql_error() );

echo "Atualizado com sucesso. Obrigado!";

} else {

mkdir("$pasta/$imovel", 0777);

echo "<p align=center>O upload do arquivo <b>$nome_arquivo</b> foi concluído com sucesso.</p>";

$sql="UPDATE imoveis SET $id_arquivo ='$pasta/$imovel/$nome_arquivo' WHERE codigo='$imovel'";

$exe_update = mysql_query($sql) or die("Error" . mysql_error() );

echo "Atualizado com sucesso. Obrigado!"; } else {

echo "<p align=center>O arquivo $nome_arquivo não pôde ser copiado para o servidor.</p>";(mysql_error());

}

}

De que maneira eu poderia configurar uma mensagem de erro quando o mkdir não puder ser utilizado?

Link para o comentário
Compartilhar em outros sites

  • 0

if(file_exists ("$pasta/$imovel")) {

if (copy ($arquivo_temporario, "$pasta/$imovel/$nome_arquivo")){

echo "<p align=center>A imagem <b>$nome_arquivo</b> foi atualizada com sucesso.</p>";

$sql="UPDATE imoveis SET $id_arquivo ='$pasta/$imovel/$nome_arquivo' WHERE codigo='$imovel'";

$exe_update = mysql_query($sql) or die("Erro" . mysql_error());

} else {

echo "Erro."; die(mysql_error);

} else {

mkdir("$pasta/$imovel");

echo "$nome_arquivo - $id_arquivo";

}

?>

Não está funcionando.

Link para o comentário
Compartilhar em outros sites

  • 0

O arquivo tem que ser copiado no servidor e o nome fica na base de dados.

Preciso da variável $i para receber os nomes dos campos do formulário e automatizar o processo.

Imagem1, Imagem2, Imagem3, Imagem4 são os campos na tabela e os arquivos tem nomes diferentes.

Cada arquivo precisa passar pelo script.

set_time_limit (0);

include 'conn.php';

$imovel = $_POST['codigo'];

$pasta = "photos";

for ($i=1 ; $i<=5 ; $i++) {

$id_arquivo = "arquivo".$i;

$erro = FALSE;

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

$tamanho_arquivo = $_FILES[$id_arquivo]['size'];

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

}

Isso está correto?

Link para o comentário
Compartilhar em outros sites

  • 0

<?

set_time_limit (0);

include ("conn.php");

$imovel = $_POST['codigo'];

$pasta = "photos";

for ($i=1 ; $i<=4 ; $i++) {

$id_arquivo = "imagem".$i;

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

$tamanho_arquivo = $_FILES[$id_arquivo]['size'];

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

if(copy($arquivo_temporario, "$pasta/$imovel/$nome_arquivo")) {

$sql = ("UPDATE imoveis SET $id_arquivo='$pasta/$imovel/$nome_arquivo' WHERE codigo='$imovel'");

$exe_update = mysql_query($sql) or die("Erro" . mysql_error());

echo "$id_arquivo atualizado com o arquivo $nome_arquivo. Obrigado!";

} else {

mkdir("$pasta/$imovel", 0777);

copy($arquivo_temporario, "$pasta/$imovel/$nome_arquivo");

$sql = ("UPDATE imoveis SET $id_arquivo='$pasta/$imovel/$nome_arquivo' WHERE codigo='$imovel'");

$exe_update = mysql_query($sql) or die("Erro" . mysql_error());

echo "$id_arquivo atualizado com o arquivo $nome_arquivo. Obrigado!";

}

}

?>

O script tá colocando nome no banco de dados, o problema é que não tá copiando as imagens pro servidor.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...