2012-11-05 42 views
13

से मेरी ब्लॉब छवि दिखाने के लिए तो मेरा आखिरी सवाल यह है कि मेरी techID एक खोज से पता चला है की पर था:मैं अपने पीएचपी पेज की जरूरत है mysql डेटाबेस

I am trying to have my "Details" page to reference two seperate parts of my server that are linked via techID

मेरा नया सवाल इस पृष्ठ पर अब भी है। मैंने एक गूंज छवि में भी जोड़ा है। लेकिन Blob का उपयोग कर परेशानी हो रही है और यह मेरी छवि प्रदर्शित करती है और बाइनरी जेपीईजी डेटा नहीं। मैं इसका एक और उदाहरण ढूंढने की कोशिश कर रहा हूं लेकिन मेरी त्रुटि को ठीक करने वाला कोई भी नहीं ढूंढ सकता।

//Header ('Content-type: image/jpeg') 
echo "<dt><strong>Technician Image:</strong></dt><dd>" . '<img src='.$row2['image'].' width="290" height="290">' . "</dd>"; 

और

$query_Recordset2 = "SELECT * FROM technician WHERE techID=" . $row1["techID"] ; 
$Rs2 = mysql_query($query_Recordset2) or die(mysql_error()); 

केवल परिवर्तन (स्पष्ट रूप से ठीक कर रहा दिया गया था कि काम भी शामिल है) मैं अपने आखिरी सवाल से अब तक में डाल दिया है कर रहे हैं।

मुझे समझ में नहीं आता कि 'Content-type: image/jpeg' कहां और कैसे रखा जाए, ताकि मेरा पृष्ठ छवि को लिंक किया जा सके, यह माइम प्रकार image/jpeg है। Eji` = 7f $ करो "ख:

क्या मैं अपने पन्ने पर देख रहा हूँ इस

तकनीशियन छवि है Ckkc R ^एमए; एन ~ 0 & मीटर) J R E) JDR E) JDR E) JDR E) JDR E) JDR ई) जेडीएसजेआर ) + N .R, u i n9, QX ~ {( ̮ : 2 12 " aV7 6 { LP [ W گ आर $ + LMc'hM 5 o PA | ګ .8 E ģ Rn 1 [ { 3> rY एक्स ; Ǖ u z ' vf N 葟 z Q k 3 O ܨ ۀ ? एस , एन [{+ डी ; ' $ $ & iJR ) जेआर ) जेआर ) जेआर ) जेआर ) जे आर) जे आर) जे आर) जे आर) जे आर) जे आर) जे आर) चौड़ाई = "290" ऊंचाई = "290">

जाहिर है, मैंने एक मध्यम खंड हटा दिया है, इसलिए यह भारी नहीं है। वहां एक छोटी "टूटी हुई छवि" बॉक्स है जो सामने आता है और जब मैं "नई विंडो में छवि खोलता हूं" चुनता हूं तो यूआरएल Content-type: है या मुझे यूआरएल http:// localhost/Sim5Server/Pages/%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%10JFIF%EF%BF%BD%01%02%EF%BF%BD%EF%BF%BDd%EF%BF%BDd%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BDC%EF%BF%BD

I के साथ एक वर्जित एक्सेस पेज मिलता है। उस यूआरएल में एक जगह डाली है क्योंकि यह इंटरनेट के लिए एक लिंक नहीं है।

मैं केवल सामान्य ब्लॉब प्रकार के रूप में मैं सिर्फ यह एक छोटे से कम 64KB से छवि

+1

* sidenote: * बहिष्कृत 'mysql_ *' फ़ंक्शंस का उपयोग करना बंद करें। इसके बजाए [MySQLi] (http://php.net/manual/en/book.mysqli.php) या [पीडीओ] (http://php.net/manual/en/book.pdo.php) का उपयोग करें। – Raptor

उत्तर

37

आपके वर्तमान मामले में, आपके पास दो अपफ्रंट विकल्प हैं।

पहला, और यदि आप इस तरह की कई छवियां हैं, तो मैं अनुशंसा नहीं करता हूं, इनलाइन बेस 64 एन्कोडिंग का उपयोग करना है।इस के साथ किया जाता है:

<img src="data:image/jpeg;base64,<?php echo base64_encode($image); ?>" /> 

एक कॉपी/पेस्ट संस्करण, अपने मौजूदा कोड का उपयोग:

echo '<dt><strong>Technician Image:</strong></dt><dd>' 
    . '<img src="data:image/jpeg;base64,' . base64_encode($row2['image']) . '" width="290" height="290">' 
    . '</dd>'; 

दूसरी विधि एक "छवि" PHP फ़ाइल है कि में छवि के आईडी लेता है बनाने के लिए है एक क्वेरी-स्ट्रिंग पैरामीटर के रूप में डेटाबेस और छवि outputs। तो, अपने HTML कुछ ऐसा दिखाई देगा:

<img src="image.php?id=<?php echo $image_id; ?>" /> 

और अपने PHP पृष्ठ पर कुछ इसी तरह दिखेगा:

<?php 
$id = (isset($_GET['id']) && is_numeric($_GET['id'])) ? intval($_GET['id']) : 0; 
$image = getImageFromDatabase($id); // your code to fetch the image 

header('Content-Type: image/jpeg'); 
echo $image; 
?> 
+0

मेरी पोस्ट को ठीक करने के लिए धन्यवाद (अभी तक मेरे पोस्टिंग शिष्टाचार में इतना अच्छा नहीं है)। मैंने दूसरे की कोशिश की लेकिन मुझे लगता है कि मैं कुछ समय में कुछ गलत कर रहा था। वहां कई तस्वीर नहीं हैं इसलिए मैं आपके साथ और मूसा की पोस्ट (मूसा के बाद से गया था क्योंकि मैं इसे अपने पूर्व-मौजूदा कोड पर कॉपी और पेस्ट करने में सक्षम था)। क्या आप मुझे 'बेस 64' डी/एन्कोडिंग वास्तव में क्या करने में कोई उत्तेजना दे सकते हैं? – DBeslan

+0

@DBeslan मैंने आपके लिए एक प्रतिलिपि/पेस्ट उदाहरण के साथ अपडेट किया है (हालांकि आपको पहले से ही मूसा से मिल गया है; मैं अभी भी दूसरे संस्करण को काम करने की कोशिश करने की सलाह देता हूं और आपके साथ काम करने में मदद करने में खुशी होगी। – newfurniturey

+0

I पता नहीं है कि मेरी छवि का प्रकार क्या है। यह जेपीईजी, पीएनजी, जीआईएफ हो सकता है। अब –

2

के रूप में एक ही तरीका है कि आप एक ही पृष्ठ से एक छवि उत्पादन कर सकते हैं के रूप में दस्तावेज़ एक data uri साथ है की जरूरत है इस्तेमाल किया है।

echo "<dt><strong>Technician Image:</strong></dt><dd>" . 
    '<img src="data:image/jpeg;base64,'. 
     base64_encode($row2['image']). 
     '" width="290" height="290">' . "</dd>"; 
+0

मैंने कोशिश की, मुझे लगता है कि एक 290x290 "खाली छवि" बॉक्स है। मैं बेस 64 एन्कोडिंग/डिकोडिंग को कमजोर नहीं करता हूं। – DBeslan

+0

@DBeslan अब इसे आजमाएं – Musa

+0

आईटी काम किया! बहुत बहुत धन्यवाद मुसा। मैं आपसे पूछना चाहता हूं कि यह कैसे काम करता है? यह समझने में बहुत आसान होगा कि मैंने क्या किया है। – DBeslan

-1

मुझे लगता है कि सबसे अच्छा समाधान डेटाबेस में बजाय छवि के पथ स्टोर करने के लिए है पूरी छवि को बीएलओबी के रूप में संग्रहित करना। और उसके बाद वेबपृष्ठ पर छवि दिखाने के लिए डेटाबेस में संग्रहीत पथ पर आईएमजी टैग की स्रोत संपत्ति सेट करें।

2

सही कोड नीचे जैसा होना चाहिए। संसाधन आईडी को स्ट्रिंग में बदलने के लिए आपको stream_get_contents() का उपयोग करना होगा।

<img src="data:image/jpeg;base64,<?php echo base64_encode(stream_get_contents($row2['image'])); ?>" /> 
+0

आपने मेरे जीवन के बहुत सारे घंटे बचाए, धन्यवाद। मेरा कोड बस बेस 64_encode ($ image_blob_file) के साथ काम करने के लिए उपयोग किया जाता है। हमने हाल ही में एक नए में अपग्रेड किया है मेजबान और यह काम करना बंद कर दिया; मुझे त्रुटियों का एक गुच्छा दे रहा है (बेस 64_encode स्ट्रिंग की उम्मीद है लेकिन संसाधन मिला)। धन्यवाद, जब मैं छवि के बजाय इनपुट स्ट्रीम एन्कोड करता हूं। यह काम करता है। –

+0

यह आश्चर्य की बात है कि स्ट्रीम_get_contents() का कितना खराब संदर्भ है, मैंने कभी भी "स्ट्रिंग php पर ब्लॉब", "ब्लॉब को स्ट्रिंग में कनवर्ट करें ..." जैसे खोजों पर कभी नहीं छोड़ा है ... – aurelienC