upload de ficheiros

fhanity

Membro
Precisava de ajuda com uma pagina de administração para o meu site de upload de ficheiro para a pat..

para ja esta assim.

PHP:
<?php

$uploaddir = "uploads";

$allowed_ext = "jpg, gif, png, pdf, rar, zip, exe, jpeg, txt";

$max_size = "300000000";
$max_height = "";

$max_width = "";

$random_digit=rand(0000,999999999);


$extension = pathinfo($_FILES['file']['name']);

$extension = $extension[extension];

$allowed_paths = explode(", ", $allowed_ext);

for($i = 0; $i < count($allowed_paths);
$i++) {
if ($allowed_paths[$i] == "$extension") {
$ok = "1";
}
}


if ($ok == "1") {
if($_FILES['file']['size'] > $max_size){
print "Ficheiro demasiado grande!";

exit;
}

$new_file_name=$random_digit.'.'.$extension;

    
if(is_uploaded_file($_FILES['file']['tmp_name'])){
    
move_uploaded_file($_FILES['file']['tmp_name'],$uploaddir.'/'.$new_file_name.$_FILES['name']);
}

$message = "Ficheiro enviado. Para aceder ao ficheiro --> ";

$link = "link" . $new_file_name;
    
print $message ."<a href=" . $link .">" . $link . "</a>";

}
else {
    print "Extensao nao permitida";
}
?>
e

Código:
<html>
<head> 
<body bgcolor="#CCCCFF">
<form action="upload.php" method="post" enctype="multipart/form-data" name="form" id="form">
<center><strong>Selecione um ficheiro</strong></p>
<input name="file" type="file" id="file" size="80" /></p>
<input type="submit" name="Submit" value="Upload!" /></center></form>
</html>
</body>
Precisava de uma pagina de administração para apagar/mudar o nome aos ficheiros enviados e o IP de quem enviou assim cmo a data..

alguem me pode ajudar ?
 
Boas, vê se isto ajuda. Em seguida, precisas de criar um script PHP para, dado o path absoluto de um ficheiro, efectuar a acção de actualizar ou remover. Para tal, podes passar ambos os argumentos na query string (e.g. script.php?file=file.pdf&action=delete), que podes em seguida ler no script.php através da variável $_GET.
 
nao tou muito familiarizada com PHP =| Isto é pra minha Pat pois tou no 12º e nos nao demos php logo o pouco q sei é por mim propria..

com aquele script php do link dps faço como ?
 
Aquele script do link acima faz uma listagem de todos os ficheiros presentes em determinada pasta.

Tal como referiu o AliFromCairo, terás de criar um ficheiro php com as acções que pretendes.

Pegando no exemplo acima..

Código:
...
if ($file != "." && $file != "..")
{
       $thelist .= '<a href="/script.php?filename='.$file.'&action=delete">'.$file.'</a>';
}
...

Como podes reparar, alterei o link para script.php?filename=x&action=delete, que neste caso seria para apagar.

Feito isto terás de criar o ficheiro script.php com a seguinte informação:

Código:
$folder_path = path_para_a_pasta;

if ($_GET[filename] && $_GET[action] == 'delete') 
{
   unlink($folder_path.$_GET['filename']);
}

Isto é um exemplo (muito) básico de como o ficheiro pode ser eliminado da pasta, apenas para que fiques com uma ideia de como pode ser feito.

Quanto ao IP, data, etc.. acho que a forma mais fácil será recorrer a uma base dados mysql que armazene essa informação.
 
Última edição:
existe alguma maneira de "ocultar" os alguns ficheiros do servidor para que eles nao apareçam na lista? ou mudar o codigo para nao aparecerem na lista..
 
Neste exemplo concreto, e pegando no código inicial, apenas tens de colocar na linha if ($file != "." && $file != "..") os ficheiro que não queres que apareçam, da forma $file != 'nome_ficheiro.ext'

Código:
if ($file != "." && $file != ".." && $file != "o_ficheiro_q_não_queres_q_apareça.ext")
{
       $thelist .= '<a href="/script.php?filename='.$file.'&action=delete">'.$file.'</a>';
}
 
Última edição:
"'.$file.''; } } } closedir($handle); } ?>

List of files:"

aparece-me isto qd substitui pelo teu codigo.

tipo se eu nao quiser que apareça o apagar.html nem o delete.php nem index.php como faço ?
 
Aquilo era só uma ideia para entenderes como funciona e perceberes como tinha de ser feito..

Exemplo completo com aquilo que pediste..

Código:
<?php
 if ($handle = opendir('.')) {
   while (false !== ($file = readdir($handle)))
      {
        if ($file != "." && $file != ".." && $file != "apagar.html" && $file != "delete.php" && $file != "index.php")
		{
       $thelist .= '<a href="'.$file.'">'.$file.'</a> ..... <a href="/script.php?filename='.$file.'&action=delete">(Apagar)</a><br />';
		}
       }
  closedir($handle);
  }
?>

<P>List of files:</p>
<P><?=$thelist?></p>
 
surgiu-me mais um problema =|

se enviar outros ficheiros alem de imagens, qd tento abrir os ficheiros directamente, supondo:

http://site.com/uploads/fhanity.rar

o browser tenta abrir o ficheiro em vez de guardar o ficheiro.. como altero o codigo de forma a q qd carregue num link o ficheiro seja pedido pra download?

--

nao sei se isto pode ser feito mas existe maneira de criar um form em q se introduza o nome do ficheiro e seja efectuado o download ?
 
Back
Topo