Jump to content
bonucci

file upload, duas ou 3 pastas antes ou para a root

Recommended Posts

bonucci

Boas pessoal, saquei este file uploader, ele basicamente introduz o ficheiro que eu fiz o upload e mete na mesma pagina que esta o script do php file upload, alguem me sabe dizer onde posso controlar no codigo de maneira para poder meter os ficheiros que fiz o upload  a uma pasta, ou duas pastas anteriores ou na root?

Aqui deixo o script:

<?php
    $myUpload = new maxUpload(); 
  
    $myUpload->uploadFile();
?>
<?php

class maxUpload{
    var $uploadLocation;
    

    function maxUpload(){
        $this->uploadLocation = getcwd().DIRECTORY_SEPARATOR;
    }


    function setUploadLocation($dir){
        $this->uploadLocation = $dir;
    }
    
    function showUploadForm($msg='',$error=''){
?>
       <div id="container">
            <div id="header"><div id="header_left"></div>
            <div id="header_main">File Uploader</div><div id="header_right"></div></div>
            <div id="content">
<?php
if ($msg != ''){
    echo '<p class="msg">'.$msg.'</p>';
} else if ($error != ''){
    echo '<p class="emsg">'.$error.'</p>';

}
?>
                <form action="" method="post" enctype="multipart/form-data" >
                     <center>
                         <label>File:
                             <input name="myfile" type="file" size="30" />
                         </label>
                         <label>
                             <input type="submit" name="submitBtn" class="sbtn" value="Upload" />
                         </label>
                     </center>
                 </form>
             </div>
             
         </div>
<?php
    }

    function uploadFile(){
        if (!isset($_POST['submitBtn'])){
            $this->showUploadForm();
        } else {
            $msg = '';
            $error = '';
            
            
            if (!file_exists($this->uploadLocation)){
                $error = "The target directory doesn't exists!";
            } else if (!is_writeable($this->uploadLocation)) {
                $error = "The target directory is not writeable!";
            } else {
                $target_path = $this->uploadLocation . basename( $_FILES['myfile']['name']);

                if(@move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) {
                    $msg = basename( $_FILES['myfile']['name']).
                    " was uploaded successfully!";
                } else{
                    $error = "The upload process failed!";
                }
            }

            $this->showUploadForm($msg,$error);
        }

    }

}
?>

Share this post


Link to post
Share on other sites
softklin

A função setUploadLocation permite-te definir a localização para onde queres enviar os teus ficheiros. Basta numa instância da classe chamares essa função; como argumento passas a localização onde queres que o ficheiro seja guardado.

    $myUpload = new maxUpload();
    $myUpload->setUploadLocation('/var/temp/meusUploads/');
    $myUpload->uploadFile();

Não te esqueças da barra final quando indicares o caminho.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
bonucci

nesse caso se quiser meter na pasta imagens teria que por ?

function setUploadLocation($imagens){
        $this->uploadLocation = $imagens;
    }

Desculpa pela pergunta noob :\

Share this post


Link to post
Share on other sites
softklin

Não, a função já existe na classe. Se tu já tens uma variável $imagens com o caminho para a pasta, então apenas precisas de chamar a função com esse argumento, isto é:

    $myUpload = new maxUpload();
    $myUpload->setUploadLocation($imagens);
    $myUpload->uploadFile();

O importante é chamares a função setUploadLocation antes de fazeres o upload.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
bonucci

Nao softclean, eu nao tenho um caminho para a pasta na variavel, como o ponho?

:\

Share this post


Link to post
Share on other sites
softklin

Primeiro, tens de decidir onde queres guardar as tuas imagens. Se quiseres uma pasta antes, o teu caminho é

$imagens = '../';

Se quiseres duas pastas antes, será

$imagens = '../../';

E assim sucessivamente. Se quiseres noutra pasta qualquer, então pões essa pasta na variável. Tu tens de substituir todo aquele bloco no inicio do ficheiro:

<?php
    $myUpload = new maxUpload();

    $myUpload->uploadFile();
?>

por

<?php
    $imagens = "poes/o/caminho/da/pasta/aqui/";
    $myUpload = new maxUpload();
    $myUpload->setUploadLocation($imagens);
    $myUpload->uploadFile();
?>


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
bonucci

Obrigado Softclean, ta a dar, mas so mais uma duvida, localmente dame, mas quando o uso na web dame o seguinte erro

"The target directory doesn't exists!"

Fazes ideia o que podera ser?

Share this post


Link to post
Share on other sites
softklin

Acho que o problema é mesmo esse, a pasta não existe, ou não tem permissões de escrita. Se a pasta não existe, o programa não a cria automaticamente, e a execução é interrompida.

A solução é criar essa pasta, ou dar-lhe permissões de escrita (tipicamente para o grupo Others, as permissões são rw- (read and write), se for um sistema Unix).


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.