Setelah sekian lama tidak Update jadi kangen juga.. kali ini saya akan membahas tentang upload dan resize gambar.. Pernah suatu kali saya mengakses suatu situs web toko online tertentu.. saat mengakses kok lambat banget ya.. eh ternyata gambar-gambar produknya gede-gede euy.. tahukah Anda, semakin besar gambar menyantroni web kita, semakin lambat speed dalam membuka web tersebut.. bisa-bisa konsumennya males dulu .. =D..
Upload dan Resize Images ini saya tujukan untuk pengguna Framework CakePHP dan juga menjadi jawaban setiap kawan-kawan yang telah mengirimkan email kepada saya (Terima kasih kepada kawan-kawan).. langsung aja caranya sebagai berikut:
Langkah Pertama:
buat tabel dengan nama tabel images (2 field), dengan spesifikasi sebagai berikut:
- id | primaryKey & Autoincreament
- images | longtext
Langkah Kedua:
buat file model dan simpan dengan nama image.php ke dalam appmodels, adapun skripnya sbb:
<?php
class Image extends AppModel{
var $name = ‘Image’;
}
?>
Langkah Ketiga:
download file component (component dapat Anda download secara gratis melalui link download atau Anda klik http://agussaputra.co.cc/downloads/download/6 file yang telah didownload Anda extract, akan terdapat file component bernama upload.php. simpan upload.php tersebut ke dalam appcontrollerscomponents
Langkah Keempat:
Buat controller dan simpan dengan nama images_controller.php ke dalam appcontrollers, adapun skripnya sbb:
<?php
class ImagesController extends AppController {
var $name = ‘Images’
var $components = array(‘Upload’);
function index(){
$this->set(‘images’,
$this->Image->find(‘all’));
}
function upload() {
if (empty($this->data)) {
$this->render();
}
else {
// tujuan folder upload
$destination = realpath(‘../../app/webroot/img/images/‘) . ‘/‘;
// grab the file
$file = $this->data[‘Image’][‘images’];
// upload gambar menggunakan component upload (resize)
$result = $this->Upload->upload($file, $destination, null, array(‘type’ => ‘resizecrop’, ‘size’ => array(‘150’, ‘150’), ‘output’ => ‘jpg’));
if (!$result){
$this->data[‘Image’][‘images’] = $this->Upload->result;
}
else {
// tampilkan error
$errors = $this->Upload->errors;
if(is_array($errors)){
$errors = implode(“<br>”, $errors);
}
$this->Session->setFlash($errors);
$this->redirect(‘../images/upload’);
exit();
}
if ($this->Image->save($this->data)) {
$this->Session->setFlash(‘Image has been added.’);
$this->redirect(‘../images/‘);
}
else {
$this->Session->setFlash(‘Please correct errors below.’);
unlink($destination.$this->Upload->result);
}
}
}
}
?>
Langkah Kelima:
Buat view dan simpan dengan nama index.ctp ke dalam appviewsimages, adapun skripnya sbb:
<h2>Daftar Gambar:</h2>
<li><?php echo $html->link(‘Upload Gambar’, ‘/images/upload’); ?></li>
<table cellpadding=“0” cellspacing=“0”>
<tr>
<th>Id<;/th>
<th>Nama Gambar</th>
<th>Tampilan Gambar</th>
</tr>
<?php foreach ($images as $image): ?>
<tr>
<td><?php echo $image[‘Image’][‘id’]; ?></td>
<td><?php echo $image[‘Image’][‘images’]; ?></td>
<td>
<?php $string = $image[‘Image’][‘images’]; ?>
<img src=“<?php echo $this->webroot.”img/images/<?php echo $string ?>”>
</td>
</tr>
<?php endforeach; ?>
</table>
Langkah Keenam:
Buat form view untuk upload dan simpan dengan nama upload.ctp ke dalam appviewsimages. adapun skripnya sbb:
<h2>Upload An Image</h2>
<?php echo $form->create(‘Image’, array(‘type’ => ‘file’)); ?>
<fieldset>
<legend>
Images
</legend>
<ul>
<li>
<?php echo $form->file(‘images’); ?>
</li>
</ul>
</fieldset>
<?php echo $form->end(‘Upload’); ?>
Selanjutnya untuk mencobanya Anda bisa memulai dari http://localhost/(nama_folder_cake_Anda)/images.
oh iya, pada images_controller.php kita set size menjadi 150 x 150 piksel. jadi sebesar apapun gambar yang diupload, akan diresize menjadi 150 x 150. Anda dapat mengubah size resize (tinggal diganti saja .. :) )..
Semoga bermanfaat..
angun
wah mangstab om agus thx tutorial nya ijin sedot hehehe
Agus Saputra
pul @ wah, minuman x disedot.. silahkan2.. sedot sepuasMU.. =D
Ade
kok ada pesan error gini mas,
Fatal error: Class 'AppModel' not found in C:\xampp\htdocs\download framework\images.php on line 2
angun
mas ade koq itu url nya aneh ya?
kaya bukan pake cake
CMIIW
Ade
@anggun: ya itu yang mau aku tanyakan juga... apa perlu software lain..? soalnya aq pakek XAMPP...
Agus Saputra
ade @ hmm.. mungkin ada file model yg tidak terupload pada library cake..
solusi nya mungkin Anda bisa download pada menu link download yang bernama App Model (zip), extract kemudian akan menghasilkan file app_model.php, simpan file app_model.php tersebut dalam folder FolderCakeAnda/app...... oh iya, penamaan file juga mempengaruhi, nama model untuk tabel images namanya model image.php bukan images.php .. :)
Agus Saputra
angun_pul @ biasanya mungkin perbedaan versi pul.. mungkin bisa dicoba pake app_model.php itu.. =D
cakephp
kok ga da pembahasan crud ato paging?
Agus Saputra
Iy,nanti akan sy bahas mas ttg paging ato CRUD. . d tnggu aja y mas. .
Virgi
Mau tany amas, upload pada "$result = $this->Upload->upload($file, $destination, null,...." maksudnya apa??
Agus Saputra
Virgi @ fungsi untuk malakukan resize,
$result = membuat variabel,
$this->Upload = disini kita memanggil model class Upload,
upload = merupakan function nya, karena resize tjd pada function upload..
$file = parameter, jika dalam PHP biasa, sama aja dg $_FILES[gambar][tmp_name]..
$destination = liat variabel tujuan penyimpanan resize..
rinny
bagusan mana bos antara memasang image di database dengan hanya menaruh link image ke dalam postingan.. soale kalo ke database takutnya membengkak pemakaiannnya
Agus Saputra
rinny @ yah.. kita tidak bisa memasang image langsung didatabase, kita hanya bisa memasukan linknya saja .. gambarnya tetap disimpan didalam space hosting.. itu yang lebih disarankan ..
Joni
Ada yang tahu nggak cara resize gambar dengan cakephp? Jadi ada dua ukuran gambar yaitu gambar asli dengan ukuran sebenarnya dan gambar kecil yang sudah di resize, dan kedua gambar tersebut tersimpan dalam folder yang sudah ditentukan
Alvin
ga bisa pa