Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde a todos, tenho um script já pronto, para fazer upload de imagem salvar na pasta com o nome MD5 e salva no banco MD5 também, queria usar essa função para salvar arquivos também, qualquer tipo de arquivos, mas não consigo de forma alguma fazer funcionar.
Com imagem funciona perfeitamente.
OBS: o upload de imagem usa a biblioteca 'wideimage'.
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;
}Eu tentei basicamente isso, porem ele não gera o md5 e não move para a pasta correta.(por estar usando uma função da biblioteca de imagem "saveTOfile".
Da esse erro deixando como falou.
Warning: unpack(): Type v: not enough input, need 2, have 1 in C:\xampp\htdocs\intranet\intra\libs\wideimage\vendor\de77\TGA.php on line 93
Fatal error: Uncaught WideImage_InvalidImageSourceException: File 'upload/tmp/senha google expedicao.txt' appears to be an invalid image source. in C:\xampp\htdocs\intranet\intra\libs\wideimage\WideImage.php:226 Stack trace: #0 C:\xampp\htdocs\intranet\intra\libs\wideimage\WideImage.php(184): WideImage::loadFromFile('upload/tmp/senh...') #1 C:\xampp\htdocs\intranet\intra\application.php(105): WideImage::load('upload/tmp/senh...') #2 C:\xampp\htdocs\intranet\intra\app\controller\minhaarea.class.php(64): App->uploadArquivo(Array) #3 C:\xampp\htdocs\intranet\intra\index.php(90): Area->execCadastrarArquivo(Object(App)) #4 {main} thrown in C:\xampp\htdocs\intranet\intra\libs\wideimage\WideImage.php on line 226
Vou postar a minha função de controller também:
function cadastrarImagem($app){
$postid = (int)$_GET["postid"];
$param = array("titulo"=>$app->site_titulo,
"pagina" => "formimagem",
"dados" => array(
"tituloform" => "Cadastrar imagem",
"action"=>"execCadastrarImagem",
"imagemid"=>"",
"imagemlegenda"=>"",
"imagemdestaque"=>0,
"postid"=>$postid,
"labelbtnsubmit"=>"Cadastrar Imagem"
)
);
$app->loadView("Admin",$param);
}
function execCadastrarImagem($app){
$admin = $app->loadModel("Admin");
$postid = (int)$_POST["postid"];
//verifica se foi selecionado arquivo
if($_FILES["arquivo"]["tmp_name"] == ""){
$this->listarImagens($app,$postid,$admin,"Falha ao cadastrar imagem! Selecione uma imagem.");
return;
}
// precisamos fazer o upload da imagem
// esta em application.php
//daqui vai para obj
$img = $app->uploadImagem($_FILES["arquivo"]);
//se $img retornar false = problema upload
if($img == false){
$this->listarImagens($app,$postid,$admin,"Falha ao cadastrar imagem, verifique o tipo de arquivo enviado!");
return;
}
$imagemlegenda = tStr($_POST["imagemlegenda"]);
$imagemdestaque = (int)$_POST["imagemdestaque"];
//img que retorna do upload
$obj = $admin->cadastrarImagem($app->conexao, $postid, $img, $imagemlegenda, $imagemdestaque);
if($obj) {
$mensagem = "Cadastro efetuado com sucesso!";
} else {
$mensagem = "Cadastro falhou!";
}
$this->listarImagens($app,$postid,$admin,$mensagem);
}
É só remover o if que faz a verificação dos tipos permitidos.
Inclusive está escrito isso no seu código:
/verifica se é um tipo de arquivo permitido