Pemberitahuan :

Maaf Atas Ketidak Nyamanan, Blog Ini Sedang Dalam PERBAIKAN !!

English French German Spain Italian Dutch Russian Portuguese Japanese Korean Arabic Chinese Simplified
Translate This Blog by JAS_Blog

Jan 30, 2012

Script PHP Upload Download File Via Folder

Reactions: 
Pada artikel kali ini, saya akan mencoba memaparkan secara keseluruhan bagaimana ide membuat script PHP untuk upload file ke dalam folder, disertai dengan script untuk downloadnya.


Untuk keperluan pembuatan script ini, kita butuh sebuah database untuk menyimpan properti dari file yang diupload.

CREATE TABLE upload (
  id int(11) auto_increment,
  name varchar(30),
  type varchar(30),
  size int(11),
  PRIMARY KEY  (id)
)

Field ‘id’ digunakan untuk menyimpan nomor id dari file. Nomor id ini nanti digunakan sebagai acuan untuk proses download dan hapus file. Field ‘name’ untuk menyimpan nama file, ‘type’ untuk menyimpan tipe file apakah termasuk file image (gif, jpeg, atau bmp), atau file tipe lain. Field ‘size’ terkait dengan ukuran dari file (dalam satuan bytes).

Langkah pertama dalam pembuatannya adalah, kita siapkan terlebih dahulu form untuk upload filenya.

form.html

<form enctype="multipart/form-data" action="upload.php" method="POST">
    <input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
    Pilih File: <input name="userfile" type="file" />
    <input type="submit" value="Upload" />
</form>

Form di atas, misalkan kita batasi size maksimum file yang diupload adalah 3MB.

Hasil dari form di atas adalah seperti pada gambar di bawah ini

Photobucket

Selanjutnya, kita buat script upload.php nya. Sebelumnya, misalkan kita asumsikan file yang diupload nantinya kita taruh ke dalam folder yang namanya ‘data’.

upload.php

<?php

// setting nama folder tempat upload
$uploaddir = 'data/';

// membaca nama file yang diupload
$fileName = $_FILES['userfile']['name'];     

// nama file temporary yang akan disimpan di server
$tmpName  = $_FILES['userfile']['tmp_name']; 

// membaca ukuran file yang diupload
$fileSize = $_FILES['userfile']['size'];

// membaca jenis file yang diupload
$fileType = $_FILES['userfile']['type'];

// koneksi ke mysql
mysql_connect('dbhost','dbuser','dbpass');
mysql_select_db('dbname');

// menyimpan properti atau informasi file ke tabel upload dalam db
// dengan terlebih dahulu mengecek ada tidaknya nama file dalam tabel

$query = "SELECT count(*) as jum FROM upload WHERE name = '$fileName'";
$hasil = mysql_query($query);
$data  = mysql_fetch_array($hasil);

if ($data['jum'] > 0)
{
   $query = "UPDATE upload SET size = '$fileSize' WHERE name = '$fileName'";
}
else $query = "INSERT INTO upload (name, size, type) VALUES ('$fileName', '$fileSize', '$fileType')";

mysql_query($query);

// menggabungkan nama folder dan nama file
$uploadfile = $uploaddir . $fileName;

// proses upload file ke folder 'data'
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "File telah diupload";
} else {
    echo "File gagal diupload";
}

?>

Perhatikan script di atas. Dalam script di atas terdapat antisipasi seandainya file yang diupload memiliki nama yang sama. Proses uploadnya sendiri tidak ada masalah, karena begitu nama file yang diupload sudah ada, maka secara otomatis akan mereplace file yang lama.

Namun, hal ini akan menjadi kendala di database. Bila tidak diantisipasi, maka bisa jadi terdapat dua atau lebih data nama file yang sama. Oleh karena itu sebelum entri informasi file yang diupload ke database perlu ada pengecekan terlebih dahulu, ada tidaknya nama file tersebut dalam database. Jika sudah ada, maka yang terjadi adalah proses update informasi saja, khususnya size dari file tersebut.

Setelah informasi file yang akan diupload disimpan dalam database, barulah file tersebut diupload ke folder ‘data’ menggunakan perintah move_uploaded_file();

Oya, jangan lupa sebelum Anda mengupload file, folder ‘data’ harus telah dibuat. Folder ini letaknya selevel dengan script uploadnya.

Selanjutnya kita buat script untuk menampilkan daftar file yang telah berhasil diupload. Konsepnya hanyalah membaca informasi file yang ada dalam database.

list.php

<?php
mysql_connect('dbhost','dbuser','dbpass');
mysql_select_db('dbname');

$query  = "SELECT * FROM upload";
$hasil  = mysql_query($query);

while($data = mysql_fetch_array($hasil))
{
   echo "<p><a href='download.php?id=".$data['id']."'>".$data['name']."</a> (".$data['size']." bytes) [ <a href='hapus.php?id=".$data['id']."'>Delete</a> ]</p>";
}

?>

Dalam list file di atas, informasi yang ditampilkan adalah nama file dan sizenya. Selain itu pada nama file tersedia link untuk download dan tersedia juga link untuk menghapus filenya. Untuk proses download dan hapus ini menggunakan nomor id dari file sebagai acuannya.

Berikut ini tampilan hasil dari script list.php dengan 3 buah file yang telah berhasil diupload

Photobucket

Trus… bagaimana membuat script untuk downloadnya? OK.. ini dia scriptnya

download.php

<?php

    mysql_connect('dbhost','dbuser','dbpass');
    mysql_select_db('dbname');

    // membaca id file dari link
    $id = $_GET['id'];

    // membaca informasi file dari tabel berdasarkan id nya
    $query  = "SELECT * FROM upload WHERE id = '$id'";
    $hasil  = mysql_query($query);
    $data = mysql_fetch_array($hasil);

    // header yang menunjukkan nama file yang akan didownload
    header("Content-Disposition: attachment; filename=".$data['name']);

    // header yang menunjukkan ukuran file yang akan didownload
    header("Content-length: ".$data['size']);

    // header yang menunjukkan jenis file yang akan didownload
    header("Content-type: ".$data['type']);

   // proses membaca isi file yang akan didownload dari folder 'data'
   $fp  = fopen("data/".$data['name'], 'r');
   $content = fread($fp, filesize('data/'.$data['name']));
   fclose($fp);

   // menampilkan isi file yang akan didownload
   echo $content;

   exit;
?>

Supaya memberikan proses download begitu file diklik pada list.php, maka perlu dibuat header file sebagaimana script di atas. Bila tidak diberikan header berisi informasi file seperti di atas, maka isi file akan tampil di halaman web.

Berikut ini tampilan yang muncul setelah salah satu file diklik untuk didownload

Photobucket

Terakhir, bagaimana dengan script untuk menghapus file? Konsepnya adalah terjadi 2 proses penghapusan, yaitu menghapus informasi file yang ada pada tabel database, dan menghapus file dalam folder ‘data’. Untuk menghapus file yang telah diupload ke folder, digunakan perintah unlink();

hapus.php

<?php

    mysql_connect('dbhost','dbuser','dbpass');
    mysql_select_db('dbname');

    // membaca id file yang akan dihapus
    $id      = $_GET['id'];

    // membaca nama file yang akan dihapus berdasarkan id
    $query   = "SELECT * FROM upload WHERE id = '$id'";
    $hasil   = mysql_query($query);
    $data    = mysql_fetch_array($hasil);
    $namaFile = $data['name'];

    // query untuk menghapus informasi file berdasarkan id
    $query = "DELETE FROM upload WHERE id = $id";
    mysql_query($query);

    // menghapus file dalam folder sesuai namanya
    unlink("data/".$namaFile);
    echo "File telah dihapus";

?>

Perhatikan script hapus.php di atas! Dalam script tersebut terdapat proses membaca nama file yang akan dihapus berdasarkan id nya. Nama file ini nantinya akan dijadikan acuan dalam proses menghapus file dalam folder menggunakan unlink().

Nah.. gampang bukan membuatnya? Mudah-mudahan artikel ini berguna buat pengunjung setia blog ini.

Download Script

Sumber >>>>>http://blog.rosihanari.net/ide-pembuatan-script-php-upload-download-file-via-folder

3 comments:

  1. kalo script untuk membaca file dari folder & drive tertentu, gimana bro ???

    Misal, ane mau ngebaca file dgn nama 009101-01082012-0001.txt.
    file tsb disimpan di drive E:/101/01082012/.
    sedangkan folder dalam drive E:/, itu ada banyak folder, folder 101,102,103,dst...
    selain itu, dalam setiap folder tadi, juga terdapat folder lain, contoh, 01082012, 02082012, 03082012, dst...

    nah, ane bingung script phpnya untuk ngebaca file dari drive diluar drive installan xampp ini.
    For info, ane install xampp nya di C:/xampp/htdocs/search/...

    Mohon petunjuk

    ReplyDelete
    Replies
    1. maaf lama baru dibalas ....


      dari penjelasannya Beta juga bingung nich....

      tapi kalo yang Beta pernah coba ... mendingan dicopy masuk ajha ke folder kita yang di HTDOCS (C:/xampp/htdocs/namafolderwebkita) (y) Semoga bermanfaaat gan....

      Delete

Silahkan Berkomentar Tentang Blog Ini (NO SPAM PLEASE) Agar Blog Ini Bisa Lebih Baik Lagi Dari Yang Sekarang.... TERIMA KASIH & SEMOGA BERMANFAAT :)

EasyHits4U.com - Your Free Traffic Exchange - 1:1 Exchange Ratio, 5-Tier Referral Program. FREE Advertising!

Copyright @ 2013 JAS Blog. Designed by Templateism | Love for The Globe Press