Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola tenho o seguinte script de multiplo upload de imagens em php, e o mesmo esta funcionando perfeitamente, porém ele salva as imagens no diretório e no banco de dados, o nome do arquivo, e eu gostaria que ao invés disso ele salvasse em md5 juntamente com a data do dia para evitar repetições, alguem pode me ajudar?
Segue abaixo o script:
<?php
/**
* Conexão Mysql
*/
$conn = mysql_connect('localhost', 'root', '');
$db = mysql_select_db('db');
$file = $_FILES['Filedata'];
$album = (int) $_POST['id'];
$filename = $file['name'];
$query = "INSERT INTO albums_photos (album, file) VALUES ('$album', '$filename')";
mysql_query($query);
$path = $file['tmp_name'];
$new_path = "../../uploads/".$file['name'];
move_uploaded_file($path, $new_path);
// Vamos usar a biblioteca WideImage para o redimensionamento das imagens
require("../../lib/WideImage/WideImage.php");
// Carrega a imagem enviada
$original = WideImage::load($new_path);
// Redimensiona a imagem original para 1024x768 caso ela seja maior que isto e salva
$original->resize(640, 480, 'inside', 'down')->saveToFile($new_path, null, 90);
// Cria a miniatura
$ext = end(explode(".", $new_path)); // Pega a extensão do arquivo
$thumb = str_replace(".$ext", "_thumb.$ext", $new_path); // Substitui a extensão
$original->resize(100, 75, 'inside', 'down')->saveToFile($thumb, null, 90); // Redimensiona e salva
echo mysql_insert_id(); // Retorna o id da foto
?>
Já tentei mas não consegui integrar no script.
>
Já tentei mas não consegui integrar no script.
mostre como fez e qual foi a dificuldade
Estou começando no php, este script peguei pronto, substitui na linha onde pega o arquivo mas não deu certo. se pudesse modificar no script ficaria grato, pois estou quebrando a cabeça com isso.
este tópico trata do mesmo problema, com o mesmo código
http://forum.imasters.com.br/topic/465167-upload-e-renomeio-de-imagem/
Cara usei aquele script e meio que deu certo. ele está gravando as imagens no db e na pasta com o nome md5 corretamente, porém ele da um erro no upload e não gera as thumbs. o que será que há de errado?
<?php
/**
* Conexão Mysql
*/
$conn = mysql_connect('localhost', 'root', '');
$db = mysql_select_db('db');
$file = $_FILES['Filedata'];
$album = (int) $_POST['id'];
$filename = $file['name'];
$filetmp = $file['tmp_name'];
$filetype = $file['type'];
$file_info = pathinfo($filename);
$md5_name = substr(md5(microtime()),0,32) .'.'. $file_info['extension'];
$query = "INSERT INTO albums_photos (album, file) VALUES ('$album', '$md5_name')";
mysql_query($query);
$path = $file['tmp_name'];
$new_path = "../../uploads/".$md5_name;
move_uploaded_file($path, $new_path);
// Vamos usar a biblioteca WideImage para o redimensionamento das imagens
require("lib/WideImage/WideImage.php");
// Carrega a imagem enviada
$original = WideImage::load($new_path);
// Redimensiona a imagem original para 1024x768 caso ela seja maior que isto e salva
$original->resize(640, 480, 'inside', 'down')->saveToFile($new_path, null, 90);
// Cria a miniatura
$ext = end(explode(".", $new_path)); // Pega a extensão do arquivo
$thumb = str_replace(".$ext", "_thumb.$ext", $new_path); // Substitui a extensão
$original->resize(100, 75, 'inside', 'down')->saveToFile($thumb, null, 90); // Redimensiona e salva
echo mysql_insert_id(); // Retorna o id da foto
?>
qual erro? poste a mensagem de erro aqui
ahh já achei o problema, eu copiei o outro script e nao alterei o caminho do script de redimensionamento.
Cara outro probleminha, o script de upload exibi as imagens em minuaturas quando enivadas, porém agora que esta em md5 nao aparece mais: veja no print:
/applications/core/interface/imageproxy/imageproxy.php?img=http://imageshack.us/photo/my-images/528/printkj.png&key=9ca405f9fea68aa858fc998088389d37ce5460e8dfe42a0489da7ebdac7d5eda" alt="printkj.png" />
Código do script de upload:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Álbum de Fotos 2 - multiUpload</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<script type="text/javascript" src="../../js/multiUpload.js"></script>
<script type="text/javascript">
var uploader = "";
$(function() {
$("#album").submit(function() {
// Não continue caso já exista uma instância do multiUploader
if (typeof uploader == "object")
return false;
var data = $(this).serialize(); // Dados do formulário
$(":text,textarea").attr("disabled", "disabled"); // Desabilitar os textos
// Envia o formulário via Ajax
$.ajax({
type: "POST",
url: "savealbum.php",
data: data,
cache: false,
dataType: "json",
success: function(json)
{
if (json.id > 0) // Se recebemos um id então o álbum foi salvo com sucesso
{
// Cria uma instância do multiUpload
uploader = new multiUpload('uploader', 'uploader_files', {
swf: '../../swf/multiUpload.swf',
script: 'upload.php',
expressInstall: '../../swf/expressInstall.swf',
multi: true,
data: json, // Envia a variável json para o script de upload (com o id do álbum)
fileDescription: 'JPEG Images',
fileExtensions: '*.jpg;*.jpeg',
onComplete: function(e)
{
var id = e.data; // O id retornado
var file = $("#file_"+e.id+" div:first").text(); // Nome do arquivo
var ext = file.split('.').pop(); // Extensão do arquivo
var thumb = file.replace('.'+ext, '_thumb.'+ext); // Miniatura
var $caption = $('<div class="caption" rel="'+id+'"><input type="text" name="Caption" value="Descrição da imagem" /></div>');
var $button = $('<input type="button" value="Salvar" class="save" />').click(function() {
$.post("savecaption.php", { id: $(this).parent().attr("rel"), caption: $(this).prev().val() }, function(data){
$caption.html('<strong>'+data+'</strong>');
});
});
$("#file_"+e.id+" div:first").prepend('<img src="../../uploads/'+thumb+'" width="64" height="48" /><br/>')
.append($caption.append($button));
}
});
// Cria o html base para listagem dos arquivos selecionados e barra de progresso
uploader.createBaseHtml();
// Mostra as ações (Iniciar Upload, limpar fila)
$(".upload_actions").show();
}
else // Caso o álbum não seja salvo
{
$(":text,textarea").removeAttr("disabled"); // Habilita os textos novamente
alert(json.msg); // Mostra a mensagem de erro retornada
}
}
});
return false; // Previne o form de ser enviado pela forma normal
});
$(":text,textarea").removeAttr("disabled");
});
</script>
<style type="text/css">
@import "../../css/multiUpload.css";
@import '../../css/style.css';
</style>
</head>
<body>
<h1>Álbum de Fotos 2 - multiUpload</h1>
<p>< <a href="../">Voltar para os exemplos</a></p>
<br />
<h4>Novo Álbum</h4>
<br />
<form method="post" action="savealbum.php" id="album">
<label>Título:</label> <input name="title" type="text" class="field-form" size="35" maxlength="50" />
<label>Descrição:</label> <textarea name="description" cols="40" rows="5" class="field-form"></textarea>
<br /><br />
<input type="submit" class="button-form" value="Salvar e Enviar Fotos" />
</form>
<div id="uploader"></div>
<div id="uploader_files"></div>
<br style="clear:both" />
<div class="upload_actions"><a href="javascript:uploader.startUpload();">Iniciar Envio das fotos</a> | <a href="javascript:uploader.clearUploadQueue();">Limpar fila de Upload</a> | <a href="./">Novo Álbum</a></div>
</body>
</html>
a imagem que nao apareceu: http://imageshack.us/photo/my-images/528/printkj.png/
use a função md5() para gerar o nome do arquivo
http://www.php.net/md5
e nem precisa adicionar a data. o risco de colisão do md5 é mínimo