JohnBsB 0 Denunciar post Postado Agosto 6, 2010 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
Bruno Augusto 417 Denunciar post Postado Agosto 6, 2010 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
JohnBsB 0 Denunciar post Postado Agosto 6, 2010 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
Bruno Augusto 417 Denunciar post Postado Agosto 6, 2010 ó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
JohnBsB 0 Denunciar post Postado Agosto 6, 2010 Opa, Obrigado! de grande dica consegui modificar, grande abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Ferreira_167821 0 Denunciar post Postado Setembro 13, 2012 Opa, Obrigado! de grande dica consegui modificar, grande abraço! _________ me add no face preciso falar com voce : http://www.facebook.com/LucasFerreira96 Compartilhar este post Link para o post Compartilhar em outros sites