Seperti yang dikatakan sebelumnya, blob
adalah cara untuk pergi, bagaimanapun, seperti yang ditunjukkan SanHolo itu tidak benar-benar kinerja-bijaksana dan Anda akhirnya akan mengalami masalah sebagai database Anda dapat tumbuh sangat sangat cepat!
Mengapa Anda tidak mengindeks nama file di database dan menyimpan file di server ?
Alasan utama untuk tidak mengizinkan hal seperti ini adalah masalah keamanan. Jika Anda benar-benar mencoba menutupi dasar Anda dengan tidak mengizinkan semua pengguna melihat atau mengambil konten, Anda memiliki dua opsi.
Opsi A) berikan file tersebut nama yang unik dan tidak dapat diidentifikasi seperti yang dilakukan Flickr. Nama file mencakup dua hash. Hash pengguna dan hash file. Hash kedua adalah rahasia dan satu-satunya cara Anda bisa mendapatkannya adalah dengan coba-coba. Lihat file ini saya miliki di Flickr . Dilindungi pengguna (hanya keluarga yang dapat melihat) tetapi Anda akan dapat mengaksesnya dengan baik karena URL itu sendiri berfungsi sebagai perlindungan:http://farm2.static.flickr.com/1399/862145282_bf83f25865_b.jpg , bahkan jika Anda mencoba membuat hash secara acak dan menemukan hash yang valid, hash itu akan disembunyikan secara anonim karena Anda tidak akan tahu dari siapa hash itu berasal.
Opsi B) menggunakan teknologi sisi server untuk membatasi akses. Cara ini lebih aman tetapi lebih mahal untuk server. Anda akan menyiapkan skrip yang akan mengizinkan/menolak akses ke file berdasarkan session_permissions atau yang serupa. Lihatlah kode berikut yang akan dipanggil dengan mengakses sesuatu seperti:
http://yourserver.com/getprotectedfile.php?filename=213333.jpeg
session_start();
// logic to verify the user is ok
if($_SESSION['user_access']!=true) {
exit('user not allowed here');
// WATCHOUT! THIS IS NOT SECURE! EXAMPLE ONLY.
// on a production site you have to be sure that $filename will not point to a system file
$filename = $_GET['filename'];
// gets the file and outputs it to the user
header('Content-type: image/jpeg');
header('Content-Length: '.filesize($filename));
readfile($filename);