Ir para conteúdo

POWERED BY:

Arquivado

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

JohnBsB

[Resolvido] Colocar MD5 em nomes do upload

Recommended Posts

Olá galera, estou só com um probleminha, gostaria de renomear os arquivos que faço upload para o servidor, o sistema funciona perfeitamente, mas não estou conseguindo colocar a função por exemplo:

 

" $geranomequalquer= md5(uniqid(time())) . strrchr($name, "."); "

O sistema da erro e para de fazer uploads... alguem teria uma luz de como fazer isso?

 

Desde já muito obrigado!

 

<?php

/*
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
jqUploader serverside example: (author : pixeline, http://www.pixeline.be)

when javascript is available, a variable is automatically created that you can use to dispatch all the possible actions

This file examplifies this usage: javascript available, or non available.

1/ a form is submitted
1.a javascript is off, so jquploader could not be used, therefore the file needs to be uploaded the old way
1.b javascript is on, so the file, by now is already uploaded and its filename is available in the $_POST array sent by the form

2/ a form is not submitted, and jqUploader is on
jqUploader flash file is calling home! process the upload.



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

*/

$uploadDir = dirname(__FILE__) . '/zips/';
$uploadFile = $uploadDir . basename($_FILES['Filedata']['name']);


if ($_POST['submit'] != '') {
    // 1. submitting the html form
    if (!isset($_GET['jqUploader'])) {
        // Troca o nome do arquivo
        
        // 1.a javascript off, we need to upload the file
        if (move_uploaded_file ($_FILES[0]['tmp_name'], $uploadFile)) {
            // delete the file
            // @unlink ($uploadFile);
            $html_body = '<h1>File successfully uploaded!</h1><pre>';
            $html_body .= print_r($_FILES, true);
            $html_body .= '</pre>';
            
        } else {
            $html_body = '<h1>File upload error!</h1>';

            switch ($_FILES[0]['error']) {
                case 1:
                    $html_body .= 'The file is bigger than this PHP installation allows';
                    break;
                case 2:
                    $html_body .= 'The file is bigger than this form allows';
                    break;
                case 3:
                    $html_body .= 'Only part of the file was uploaded';
                    break;
                case 4:
                    $html_body .= 'No file was uploaded';
                    break;
                default:
                    $html_body .= 'unknown errror';
            }
            $html_body .= 'File data received: <pre>';
            $html_body .= print_r($_FILES, true);
            $html_body .= '</pre>';
        }
        $html_body = '<h1>Full form</h1><pre>';
        $html_body .= print_r($_POST, true);
        $html_body .= '</pre>';
    } else {
        // 1.b javascript on, so the file has been uploaded and its filename is in the POST array
        $html_body = '<h1>Form posted!</h1><p>Error:<pre>';
        $html_body .= print_r($_POST, false);
        $html_body .= '</pre>';
    }
    myHtml($html_body);
} else {
    if ($_GET['jqUploader'] == 1) {
        // ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        // 2. performing jqUploader flash upload
        if ($_FILES['Filedata']['name']) {
            


            if (move_uploaded_file ($_FILES['Filedata']['tmp_name'], $uploadFile)) {
                // delete the file
                //  @unlink ($uploadFile);
                return $uploadFile;
            }
        } else {
            if ($_FILES['Filedata']['error']) {
                return $_FILES['Filedata']['error'];
            }
        }
    }
}
// /////////////////// HELPER FUNCTIONS
function myHtml($bodyHtml)
{

    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jqUploader demo - Result</title>
<link rel="stylesheet" type="text/css" media="screen" href="style.css"/>
</head>
<body>
    <?php echo $bodyHtml;

    ?>
    </body>
</html>
<?php
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deveria operar sobre $_FILES['Filedata']['name']

 

A partir dessa variável você separa a extensão, codifica o nome do arquivo e concatena a extensão de volta.

 

O problema é que se você usar uniqid() em cojunto com time() NUNCA poderá comparar se o arquivo já existe para sobrescrevê-lo ou não, uma vez que time() sempre vai retornar um timestamp diferente, nem que seja por um segundo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deveria operar sobre $_FILES['Filedata']['name']

 

A partir dessa variável você separa a extensão, codifica o nome do arquivo e concatena a extensão de volta.

 

O problema é que se você usar uniqid() em cojunto com time() NUNCA poderá comparar se o arquivo já existe para sobrescrevê-lo ou não, uma vez que time() sempre vai retornar um timestamp diferente, nem que seja por um segundo.

 

 

 

ótimo! então posso resumir simplesmente em

$uploadFile = time() . '.' . $name;
? esses dados eu gravo em banco para saber qual arquivo é de cada seção.

 

Estou utilizando a função

if ($_FILES['Filedata']['name']) {
            


            if (move_uploaded_file ($_FILES['Filedata']['tmp_name'], $uploadFile)) {

para mover o arquivo, eu sei que entre elas preciso colocar a função de renomear antes de mover para a pasta... mas acho que estou errando em alguma parte...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ótimo! então posso resumir simplesmente em

$uploadFile = time() . '.' . $name;
Em sendo $name o valor do índice name em $_FILES e desde que você permita que um mesmo usuário tenha mais de um arquivo igual, porém com nomes diferentes, sim.

 

Quanto ao restante do problema, minha sugestão seria que você aprendesse a fazer upload de arquivos por você mesmo, não apenas copiando o código que alguém fez e usar (isso vale para o código desse link também).

 

Uma vez que você realmente aprendeu todo o procedimento, poderá implementar a funcionalidade do plugin jQuery que está usando.

 

Bons estudos http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.