Jump to content
Fórum Script Brasil
  • 0

Erro ao copiar arquivo


rfrancisco

Question

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.

Edited by rfrancisco
Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...