Advertisement
  1. Code
  2. PHP

Cara Menggunakan Amazon S3 & PHP agar Secara Dinamis Menyimpan dan Mengelola File dengan Mudah

Scroll to top
Read Time: 6 min

Indonesian (Bahasa Indonesia) translation by ibnuhadis83 (you can also view the original English article)

Beberapa minggu yang lalu, Nettuts + memposting tutorial pengantar untuk menggunakan Amazon's Simple Storage System (S3). Mampu mengunggah file dalam jumlah tak terbatas hampir tanpa uang yang besar sangat baik,tetapi akan lebih baik lagi jika pengguna Anda dapat mengunggah file dari situs web Anda. Dengan begitu Anda tidak perlu khawatir tentang ukuran server web Anda sedetikpun. Mari mencoba!

Pada dasarnya apa yang akan kita lakukan adalah menggunakan elemen file HTML standar dan mudah untuk menggunakan kelas S3 PHP untuk membuat halaman di mana orang dapat mengunggah file ke akun S3 Anda dan mendapatkan informasi tentang file yang telah diunggah. Untuk ini, Anda memerlukan akun Amazon S3 dan server web berkemampuan PHP. Jika Anda belum pernah mendengar tentang Amazon S3, atau Anda belum memiliki akun, bacalah Tutorial Pengantar S3 Collis terlebih dahulu.

Langkah 1

Sekarang, hal pertama yang kami perlukan adalah cara PHP untuk berkomunikasi dengan server S3. Donovan Schonknecht telah menulis kelas PHP untuk ini, jadi daripada mencoba untuk menemukan kembali rodanya, kami akan menggunakannya!

  1. Unduh 'versi beta terbaru (0,2,3)'
  2. Ekstrak file .rar dan salin file S3.php ke folder baru. File ini dilengkapi dengan readme dan beberapa contoh juga, tetapi kami tidak akan menggunakannya.
  3. Buka file S3.php dan lihat sekeliling hanya untuk melihat semua pekerjaan yang tidak akan Anda lakukan sendiri berkat kelas ini! :-)

Langkah 2

Selanjutnya, buat file baru bernama page.php di folder yang sama. Hal pertama yang perlu kita lakukan adalah memasukkan file S3.php. Kami akan menggunakan fungsi require_once () di php. Fungsi ini akan menyertakan file hanya jika file sebelumnya tidak termasuk  pada halaman yang sama. Ini untuk memastikan bahwa kita tidak akan mengalami masalah dengan fungsi redefinisi ketika secara tidak sengaja skrip mencoba untuk memasukkan file  kedua kalinya.

Selanjutnya, kita harus memasukkan informasi akses Amazon Web Services (AWS) yang diperlukan skrip untuk mengakses server S3 kami. Ini adalah Kunci Akses dan Kunci Rahasia yang disediakan oleh Amazon (sekali lagi, jika Anda tidak tahu apa yang saya bicarakan lihat tutorial NETTUTS pengantar). Sekarang kami memiliki semua informasi yang diperlukan untuk memulai kelas. Kode ini diletakkan di bagian paling atas body tags.

1
<?php
2
//include the S3 class  			

3
if (!class_exists('S3'))require_once('S3.php');
4
5
//AWS access info

6
if (!defined('awsAccessKey')) define('awsAccessKey', 'CHANGETHIS');
7
if (!defined('awsSecretKey')) define('awsSecretKey', 'CHANGETHISTOO');
8
9
//instantiate the class

10
$s3 = new S3(awsAccessKey, awsSecretKey);
11
12
//we'll continue our script from here in step 4!

13
14
?>

Langkah 3

Sekarang mari kita membuat bentuk html sederhana dengan elemen file di dalamnya. Elemen ini memungkinkan pengguna untuk menelusuri drive lokal mereka untuk sebuah file. Ketika pengguna menekan tombol submit file secara otomatis akan diunggah sebagai file sementara ke server dan informasi tentang file tersebut akan dikirim dalam variabel POST.

Berikut ini cuplikan kode. Pastikan untuk tidak lupa enctype = "multipart / form-data" yang diperlukan agar elemen file berfungsi. Kode ini harus ditempatkan di luar tag <?php ?> , Karena itu adalah HTML.

1
<form action="" method="post" enctype="multipart/form-data">
2
  <input name="theFile" type="file" />
3
  <input name="Submit" type="submit" value="Upload">
4
</form>

Langkah 4

Sekarang, bagi mereka yang tidak terbiasa dengan bentuknya, action = "" memberi tahu skrip halaman mana yang harus dikirim setelah di submit. Karena disana kami menetapkan string kosong, formulir akan memposting variabel dan menyegarkan halaman saat ini. Jadi ketika laman dimuat, kami ingin memeriksa apakah formulir dikirim atau tidak. Bila formulir dikirimkan, laman harus mengeksekusi skrip yang mengambil variabel posting dan menangani pemindahan file ke server S3.

Variabel posting yang dikirim oleh elemen file adalah larik, berisi informasi tentang file tersebut. Misalnya: nama file, ukuran, jenis dan nama sementara. Yang kita perlukan hanyalah nama file dan nama sementara. Perhatikan bahwa, tidak seperti elemen formulir lainnya, elemen file akan mengirim variabel ke $ _FILES dan tidak ke $ _POST.

Kode PHP di bawah ini memeriksa apakah formulir telah dikirim dan mengambil variabel posting. Kami akan berurusan dengan server S3 nantinya. Kode ini harus ditempatkan tepat setelah kami memulai kelas s3.

1
//check whether a form was submitted

2
if(isset($_POST['Submit'])){
3
4
    //retreive post variables

5
    $fileName = $_FILES['theFile']['name'];
6
    $fileTempName = $_FILES['theFile']['tmp_name'];
7
	
8
    //we'll continue our script from here in the next step!

9
}

Langkah 5

Ok, jadi sekarang kami memiliki formulir yang mengirim file sementara ke server dan meninggalkan Anda dengan beberapa informasi. Jika Anda suka, Anda dapat mengunggah file ke server dan mengujinya. Anda akan menyadari bahwa ini memang membutuhkan beberapa waktu untuk memproses formulir, karena itu sebenarnya mengunggah file. Bagaimanapun, Anda tidak akan melihat file muncul di mana saja di server Anda karena itu hanya disimpan sebagai file sementara. Yang perlu dilakukan hanyalah memindahkan file yang kami unggah ke dalam keranjang. Pertama kita akan membuat keranjang baru dan kemudian kita akan memindahkan file ke keranjang itu.

Untuk membuat keranjang, kami akan menggunakan fungsi putBucket (bucket, acl) di mana 'bucket' adalah nama keranjang (kata Amazon untuk folder utama atau direktori file Anda). Argumen kedua adalah Daftar Kontrol Akses (ACL) di mana Anda dapat menentukan siapa yang dapat dan yang tidak dapat membaca atau menulis ke keranjang ini. Kami ingin siapa pun dapat membaca file kami, jadi kami akan menggunakan S3 :: ACL_PUBLIC_READ. Perhatikan bahwa keranjang hanya perlu dibuat satu kali, jadi setiap kali skrip ini dijalankan, fungsi ini tidak akan melakukan apa-apa, karena keranjang sudah ada.

Untuk memindahkan file, kami akan menggunakan fungsi putObjectFile (sourcefile, bucket, newfilename, acl). Sourcefile adalah path ke file yang ingin kita pindahkan, jadi dalam kasus kami adalah file sementara yang diunggah melalui formulir kami. Bucket adalah keranjang untuk memindahkan file , yang akan menjadi keranjang yang baru kita buat. Newfilename adalah nama file file yang akan masuk ke keranjang. Dalam tutorial ini kita akan menggunakan nama file yang sama seperti pada drive lokal, tetapi dalam beberapa kasus Anda mungkin ingin mengubah nama file. Acl again adalah Daftar Kontrol Akses, yang akan kita atur lagi menjadi S3 :: ACL_PUBLIC_READ.

1
//create a new bucket

2
$s3->putBucket("jurgens-nettuts-tutorial", S3::ACL_PUBLIC_READ);<br /><br />
3
4
//move the file

5
if ($s3->putObjectFile($fileTempName, "jurgens-nettuts-tutorial", $fileName, S3::ACL_PUBLIC_READ)) {
6
    echo "We successfully uploaded your file.";
7
}else{
8
    echo "Something went wrong while uploading your file... sorry.";
9
}

Langkah 6

Sekarang ketika Anda memilih file dan tekan 'Upload' file tersebut akan disimpan di server amazon. Anda sudah dapat melihatnya hanya dengan memasukkan URL yang terlihat seperti ini: http://yourbucketname.s3.amazoneaws.com/yourfile.ext

Untuk sentuhan akhir, kami ingin skrip mengeluarkan daftar file di dalam keranjang. Untuk ini kita akan menggunakan fungsi getBucket (bucket), di mana bucket adalah keranjang yang ingin kita output. Fungsi ini mengembalikan larik dengan informasi tentang file. Masing-masing dikembalikan sebagai larik juga. Untuk memvisualisasikan:

Kami ingin menghasilkan setiap file dalam array $ bucket_contents. Untuk ini kita akan menggunakan loop foreach () yang akan mengulang melalui larik sampai semua elemen telah diproses. Ini akan menyimpan elemen saat ini dalam variabel file $ dan mengeksekusi kode di antara tanda kurung. Yang perlu kita lakukan sekarang adalah menggemakan tautan ke file.

Tempatkan kode ini di bawah formulir untuk menunjukkan daftar di sana.

1
<?php
2
// Get the contents of our bucket

3
$bucket_contents = $s3->getBucket("jurgens-nettuts-tutorial");
4
5
foreach ($bucket_contents as $file){
6
7
    $fname = $file['name'];
8
    $furl = "http://jurgens-nettuts-tutorial.s3.amazonaws.com/".$fname;
9
    
10
    //output a link to the file

11
    echo "<a href=\"$furl\">$fname</a><br />";
12
}
13
?>

Dengan gaya css kecil, hasil akhir Anda mungkin terlihat seperti ini:

Selesai!

Jadi begitulah, skrip unggahan file tanpa batas Anda sendiri. Tentu saja ada banyak lagi yang dapat Anda lakukan dengan kelas PHP S3. Hanya melirik sekilas pada file readme dan Anda akan baik untuk melanjutkan. Sangat mudah untuk digunakan!

Unduh file sumber

Lihat demo

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.