जैसा पहले कहा, blob
जाने का रास्ता है, हालांकि, जैसा कि सैनहोलो बताता है कि यह वास्तव में प्रदर्शन-वार नहीं है और आप अंततः समस्याओं में भाग लेंगे क्योंकि आपका डेटाबेस वास्तव में तेजी से बढ़ सकता है!
आप डेटाबेस पर फ़ाइल-नाम को अनुक्रमित क्यों नहीं करते और फ़ाइल को सर्वर पर संग्रहीत करते हैं ?
कुछ इस तरह की अनुमति नहीं देने का मुख्य कारण सुरक्षा मुद्दे होंगे। यदि आप वास्तव में सभी उपयोगकर्ताओं को सामग्री देखने या हथियाने की अनुमति न देकर अपने आधार को ढंकने की कोशिश कर रहे हैं तो आपके पास दो विकल्प हैं।
विकल्प ए) फ़ाइल को फ़्लिकर की तरह एक अद्वितीय, गैर-पहचान योग्य नाम दें। फ़ाइल का नाम दो हैश को समझता है। एक उपयोगकर्ता हैश और एक फ़ाइल-हैश। दूसरा हैश गुप्त है और इसे प्राप्त करने का एकमात्र तरीका परीक्षण और त्रुटि है। फ़्लिकर पर मेरे पास मौजूद इस फ़ाइल पर एक नज़र डालें . उपयोगकर्ता-संरक्षित है (केवल परिवार देख सकता है) लेकिन आप इसे ठीक उसी तरह एक्सेस कर पाएंगे क्योंकि URL ही सुरक्षा के रूप में कार्य करता है:http://farm2.static.flickr.com/1399/862145282_bf83f25865_b.jpg , भले ही आप बेतरतीब ढंग से हैश उत्पन्न करने की कोशिश कर रहे हों और एक वैध पाया गया हो, यह गुमनामी से छिपा होगा क्योंकि आपको नहीं पता होगा कि यह कौन था।
विकल्प बी) पहुंच को सीमित करने के लिए सर्वर साइड प्रौद्योगिकी का उपयोग करें। यह विधि सुरक्षित है लेकिन सर्वर के लिए अधिक महंगी है। आप एक स्क्रिप्ट सेट अप करेंगे जो session_permissions या कुछ समान के आधार पर फ़ाइल तक पहुंच की अनुमति/अस्वीकार करेगी। निम्नलिखित कोड को देखें जिसे कुछ इस तरह एक्सेस करके बुलाया जाएगा:
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);