PHP

2009-03-27 22 views
6

का उपयोग कर SQL सर्वर में बाइनरी डेटा डालें मेरे पास SQL ​​Server 2005 डेटाबेस में एक varbinary (MAX) फ़ील्ड है। मैं PHP का उपयोग कर उस क्षेत्र में बाइनरी डेटा (यानी एक छवि) डालने का तरीका जानने का प्रयास कर रहा हूं। मैं SQL सर्वर डेटाबेस के कनेक्शन के लिए ओडीबीसी का उपयोग कर रहा हूं। मैंने कई उदाहरण देखे हैं जो इसे MySQL डेटाबेस के साथ उपयोग के लिए समझाते हैं लेकिन मैं इसे SQL सर्वर के साथ काम करने में सक्षम नहीं हूं। धन्यवाद।PHP

उत्तर

3

सरल उत्तर यह है कि: आप जो कर रहे हैं उसे रोकें।

आप डेटाबेस के अंदर बाइनरी फ़ाइलों को स्टोर नहीं करना चाहते हैं जब तक कि आपके पास कुछ विशिष्ट सुरक्षा समस्याएं न हों। इसके बजाय आप अपने फ़ाइल नामों को संग्रहीत करना चाहते हैं (संभावित रूप से फाइलों का नाम बदलने के लिए फ़ाइलों का नाम बदलें) और फिर डेटाबेस में संग्रहीत करें। अगर सुरक्षा कोई समस्या है, तो उन्हें एक गैर वेब फ़ोल्डर में रखें और फ़ाइल को पुनर्प्राप्त करने के लिए अपने कोड का उपयोग करें और उपयोगकर्ता को इसकी पहुंच होने पर ही फ़ाइल की सेवा करें।

डेटाबेस के अंदर छवियों या फ़ाइलों को संग्रहीत करना फ़ाइल स्थान का एक अपशिष्ट है, डेटाबेस का गलत उपयोग है, और चीजों को सर्वोत्तम नहीं करने देता है; फाइल सिस्टम फाइल जानता है, डेटाबेस डेटा जानता है।

+0

एक gzdeflated पाठ स्ट्रिंग के बारे में क्या? बाइनरी संपीड़ित टेक्स्ट डेटा डेटाबेस में घर पर सही लगता है। – chiliNUT

+3

उसने नहीं पूछा था अगर उसे चाहिए - उसने पूछा कि वह कैसे कर सकता है। आपको ओपी के प्रश्न का उत्तर देना चाहिए - फिर - यदि आपको जरूरी है, तो अपने विचार/राय जोड़ें। – Losbear

+1

हालांकि यह अच्छी सलाह है, लेकिन यह उन लोगों की सहायता करता है जो समाधान की तलाश में समान मुद्दों को Google करते हैं। सभी बाइनरी डेटा एक छवि या फ़ाइल नहीं है। – dmarra

13
function prepareImageDBString($filepath) 
{ 
    $out = 'null'; 
    $handle = @fopen($filepath, 'rb'); 
    if ($handle) 
    { 
     $content = @fread($handle, filesize($filepath)); 
     $content = bin2hex($content); 
     @fclose($handle); 
     $out = "0x".$content; 
    } 
    return $out; 
} 

उपयोग:

$out = prepareImageDBString('/img/myimg.png'); 
mssql_query("INSERT INTO MyTable(MyImage) VALUES($out) "); 

MyImage एसक्यूएल सर्वर क्षेत्र जहां प्रकार छवि

+1

असीमित +1। यह answear चुनने चाहिए। ब्लॉब का उपयोग करते समय कई मामले हैं (उदाहरण के लिए वास्तव में छोटी फाइलों के 10 मिलियन के बजाय बैकअप 1 डेटाबेस फ़ाइल के लिए आसान)। सिर्फ एक टिप्पणी - समारोह में अंत में वापसी की कमी है। –

2

मैं इसे एक बुरी आदत है कहना नहीं होगा है, यह कितना बड़ा है पर निर्भर करता है छवि और कैसे आपका आवेदन इसका इस्तेमाल करें।

यदि आकार में 256K से नीचे फ़ाइल है, डीबी में स्टोर अधिक कुशल है; 1 एमबी से अधिक, फाइल सिस्टम में स्टोर की सिफारिश की जाती है।

Storing images in SQL Server?

संबंधित मुद्दे