move_uploaded_file does not work after concatenating with MD5

Asked

Viewed 190 times

-1

I am common small problem, I have a function already ready, to upload images and edit it, this function works perfectly, only it uses a library (wideimage), I would like to use another function reusing the codes only that I can not save removing the library. NOTE: it arrives to save the name in the bank, only not saved in the specified folder.

//ESSA FUNÇÃO FUNCIONA NORMAL.
function uploadImagem($arquivo){
        //cria um arquivo temporario, tmp = pasta temporaria,
        //$arquivo['name'] é recebido por parametro
        $img_tmp = $this->sistema_pasta_upload."tmp/".$arquivo['name'];

    //pega qual é a extençãop do arquivo
    $ext = strtolower(end(explode(".",$arquivo['name'])));

    //verifica se é um tipo de arquivo permitido
    //$this->ext_img é os arquivos permitidos.
    // se não for arquivo permitido retorna "RETURN FALSE"
    if(array_search($ext,$this->ext_img) === 0) {
        /*passa o nome do arquivo temporario [tmp_name] e copia
        * para $img_tmp
        */
        if(move_uploaded_file($arquivo['tmp_name'], $img_tmp)){
            // criar um nome unico e randomico para o arquivo

            $foto = md5(uniqid(time())).".".$ext;

            include("libs/wideimage/WideImage.php");
            WideImage::load($img_tmp)->resize(614, 299)->saveToFile($this->sistema_pasta_upload.$foto);
            WideImage::load($img_tmp)->crop('center', 'center', 257, 247)->saveToFile($this->sistema_pasta_upload."thumb/".$foto);
            //deleta o arquivo temporario
            unlink($this->sistema_pasta_upload."tmp/".$arquivo['name']);
            //retorna nome do arquivo para salvar no banco
            return $foto;
        }
    } 

    return false;
}

/*THIS FUNCTION CAN BE SAVED TO NORMAL FOLDER TMP ONLY THEN NOT SAVED IN THUMB FOLDER AFTER RECEIVING MD5. */

Function uploadArchive($arq_name){ //creates a temporary file, tmp = temporary folder, //$arq_name['name'] is received by parameter $arq_tmp = $this->sistema_pasta_upload." tmp/". $arq_name['name'];

//pega qual é a extençãop do arquivo $ext = strtolower(end(explode(".",$arq_nome['name']))); //verifica se é um tipo de arquivo permitido //$this->ext_img é os arquivos permitidos. // se não for arquivo permitido retorna "RETURN FALSE" if(array_search($ext,$this->ext_img) === 0) { /*passa o nome do arquivo temporario [tmp_name] e copia * para $arq_tmp */ if(move_uploaded_file($arq_nome['tmp_name'], $arq_tmp)){ // criar um nome unico e randomico para o arquivo $foto = md5(uniqid(time())).".".$ext; //preciso salvar o arquivo apartir daqui. move_uploaded_file($foto,"thumb/"); //deleta o arquivo temporario //unlink($this->sistema_pasta_upload."tmp/".$arq_nome['name']); //retorna nome do arquivo para salvar no banco return $foto; } } return false; }

2 answers

1


Good for me the only way it worked as I really wanted it was this way, in case someone needs something more complex can use.

function UploadArquivoNovo($arq_nome){
                    // Pasta onde o arquivo vai ser salvo
                    $_UP['pasta'] = 'upload/';

// Tamanho máximo do arquivo (em Bytes) $_UP['tamanho'] = 1024 * 1024 * 20; // 20Mb // Array com as extensões permitidas $_UP['extensoes'] = array('jpg', 'png', 'pdf', 'docx', 'xls', 'xlsx', 'doc', 'rar', 'zip', 'txt', 'ppt', 'pptx', ''); // Renomeia o arquivo? (Se true, o arquivo será salvo como .jpg e um nome único) $_UP['renomeia'] = false; // Array com os tipos de erros de upload do PHP $_UP['erros'][0] = 'Não houve erro'; $_UP['erros'][1] = 'O arquivo no upload é maior do que o limite do PHP'; $_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especifiado no HTML'; $_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente'; $_UP['erros'][4] = 'Não foi feito o upload do arquivo'; // Verifica se houve algum erro com o upload. Se sim, exibe a mensagem do erro if ($_FILES['arq_nome']['error'] != 0) { die("Não foi possível fazer o upload, erro:<br />" . $_UP['erros'][$_FILES['arq_nome']['error']]); exit; // Para a execução do script } // Caso script chegue a esse ponto, não houve erro com o upload e o PHP pode continuar // Faz a verificação da extensão do arquivo $extensao = strtolower(end(explode('.', $_FILES['arq_nome']['name']))); if (array_search($extensao, $_UP['extensoes']) === false) { echo "Por favor, envie arquivos com as seguintes extensões: jpg, png ou gif"; } // Faz a verificação do tamanho do arquivo else if ($_UP['tamanho'] < $_FILES['arq_nome']['size']) { echo "O arquivo enviado é muito grande, envie arquivos de até 2Mb."; } // O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta else { // Primeiro verifica se deve trocar o nome do arquivo if ($_UP['renomeia'] == true) { // Cria um nome baseado no UNIX TIMESTAMP atual e com extensão .jpg $nome_final = time().'.jpg'; } else { // Mantém o nome original do arquivo $nome_final = $_FILES['arq_nome']['name']; } // Depois verifica se é possível mover o arquivo para a pasta escolhida if (move_uploaded_file($_FILES['arq_nome']['tmp_name'], $_UP['pasta'] . $nome_final)) { // Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo //echo "Upload efetuado com sucesso!"; //echo '<br /><a href="' . $_UP['pasta'] . $nome_final . '">Clique aqui para acessar o arquivo</a>'; return $nome_final; } else { // Não foi possível fazer o upload, provavelmente a pasta está incorreta echo "Não foi possível enviar o arquivo, tente novamente"; } } }

0

Use the function:

$img_tmp = "my_folder"

move_uploaded_file($arquivo['tmp_name'], $img_tmp)

Only this function does everything you need.

  • then the problem is to leave the name with the MD5 not to repeat names, so will not exit the MD5

  • (md5($arquivo['tmp_name']) Function above transforms the file name into md5. You can add time too, it’s efficient, just put this code: time() without parameters and arguments.

  • Warning: move_uploaded_file() expects Exactly 2 Parameters, 1 Given in C: xampp htdocs intranet intra application.php on line 122 of this error

  • I think it might be in my container something, I’ll check.

  • It didn’t work, this complicated.

  • @will realize that he uses 2 meters there in the answer, you used only 1 and so got this Warning. would be: move_uploaded_file(md5($file['tmp_name']), $img_tmp)

  • Well, I would like to know why I voted no. topic stayed here 2 days, and the man who voted against did not come here to help, I found the solution and I thank those who tried to help and posted as a response and now the almighty and perfect god of programming comes to vote negative? Have pity also some people here also saw...

Show 2 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.