Skip to content

Instantly share code, notes, and snippets.

@danielalvarenga
Created October 3, 2012 00:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save danielalvarenga/3824194 to your computer and use it in GitHub Desktop.
Save danielalvarenga/3824194 to your computer and use it in GitHub Desktop.
<html>
<head>
<meta charset=utf-8" />
<title><?php if(isset($title)) echo $title; else echo 'SuperPI';?></title>
<link rel="stylesheet" type="text/css" href="../jquery-file-upload/css/jquery.fileupload-ui.css" />
<script type="text/javascript" src="https//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="../jquery-file-upload/js/vendor/jquery.ui.widget.js"></script>
<script type="text/javascript" src="../jquery-file-upload/js/jquery.iframe-transport.js"></script>
<script type="text/javascript" src="../jquery-file-upload/js/jquery.fileupload.js"></script>
<script type="text/javascript">
$('#fileupload').fileupload({
submit: function (e, data) {
},
stop : function(e, data) {
window.location='<?php echo site_url(uri_string().'/save_photo'); ?>';
$('#progress').slideUp('slow').remove();
$('#upload_result').html('<?php echo msg('info', anchor(uri_string(), " <strong>'+items_uploaded+' </strong>" . lang('portfolio_nr_files_uploaded') . ' ' . lang('portfolio_click_to_see_changes'))) ; ?>').slideDown('slow'); //configure nesta linha a msg no final do upload
items_uploaded = 0;
},
sequentialUploads: true,
acceptFileTypes : '/(\.|\/)(bmp|jpeg|jpg|png)$/i',
dataType: 'json',
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .bar').css(
'width',
progress + '%'
);
},
done: function (e, data) {
items_uploaded++;
}
});
</script>
</head>
<body>
<input id="fileupload" type="file" name="Filedata" data-url="<?php echo site_url('galeria/save_photo'); ?>" multiple />
<div id="progress" class="progress progress-striped active">
<div class="bar" style="width: 0;"></div>
</div>
<div id="upload_result"></div>
<hr />
</body>
</html>
public function save_photo($item_id = 0, $redirect = '')
{
// aqui vc faz o upload normal, com a classe upload do CodeIgniter
// É passado o $_FILES['Filedata']
//parametriza as preferências
$config['upload_path'] = './arquivos/galeria'; //Caminho onde será salvo
$config['allowed_types'] = 'jpg|jpeg|png'; //Tipos de imagem aceito
$config['file_name'] = 'imagem'; // Nome da imagem que será salva
$config['max_size'] = '5120'; // tamanho máximo - zero é ilimitado
$config['overwrite'] = FALSE; // Não irá sobre-escrever um arquivo existente e incrementará um valor no nome do novo arquivo
$this->load->library("upload", $config); // carrega biblioteca
$campo = "Filedata"; //Nome do campo definido no formulário. Se oculto, o padrão é userfile
if ($this->upload->do_upload($campo)) {
//reduz tamanho da imagens
$config["image_library"] = "gd2";
$config["source_image"] = $config["upload_path"] . "/" . $this->upload->file_name; // local da imagem a ser utilizada do servidor
$config['maintain_ratio'] = TRUE;
$config["width"] = 1600; // largura máxima - zero é ilimitado
$config["height"] = 1200; // altura máxima - zero é ilimitado
$config["master_dim"] = 'auto';
$this->image_lib->initialize($config); // carrega biblioteca
if (!$this->image_lib->resize()){ // redimenciona imagem
$dados['erros'][] = $this->upload->display_errors(); // retorna a mensagem de erro
}
$this->image_lib->clear();
//cria miniatura
$config["image_library"] = "gd2";
$config["source_image"] = $config["upload_path"] . "/" . $this->upload->file_name; // local da imagem a ser utilizada do servidor
$config['create_thumb'] = TRUE; // coloca "_thumb" no final do nome da miniatura
$config ['new_image'] = './arquivos/galeria/miniaturas'; // local a ser salva a miniatura
$config['maintain_ratio'] = TRUE;
$config["width"] = 160; // largura máxima - zero é ilimitado
$config["height"] = 120; // altura máxima - zero é ilimitado
$config["master_dim"] = 'auto';
$this->image_lib->initialize($config); // carrega biblioteca
if (!$this->image_lib->resize()){ // redimenciona imagem
$dados['erros'][] = $this->upload->display_errors(); // retorna a mensagem de erro
}
$this->image_lib->clear();
} else {
$dados['erros'][] = $this->upload->display_errors(); // retorna a mensagem de erro
}
// vc precisa retornar um json + ou - assim:
$this->output->enable_profiler(FALSE)->set_output(json_encode(
array('status' => $res ? TRUE : FALSE,
'message' => 'ok',
'name' => 'arquivo')));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment