2009-10-05 13 views
17

जब मैं ऐप_Data फ़ोल्डर में एएसपी छवि नियंत्रण में छवि URL प्रॉपर्टी सेट करता हूं, तो छवि पृष्ठ डिज़ाइन दृश्य में दिखाई दे रही है लेकिन ब्राउज़र में नहीं।ऐप_Data फ़ोल्डर में छवियां ब्राउज़र में दिखाई नहीं दे रही हैं

<form id="form1" runat="server"> 
<div> 
    <asp:Image ID="Image1" runat="server" ImageUrl="~/App_Data/p3.jpg" /> 
</div> 
</form> 

ऐसा लगता है कि यह सरल है, लेकिन यह छवि नहीं दिखा रहा है।

उत्तर

38

App_Data फ़ोल्डर डेटाबेस फ़ाइलों जैसे डेटा के लिए आरक्षित एक विशेष फ़ोल्डर है और वेब पर किसी भी सामग्री को प्रस्तुत नहीं करेगा। यह डिज़ाइन और जानबूझकर है और इसे बदला नहीं जा सकता (जहां तक ​​मुझे पता है)।

आपकी छवियां निश्चित रूप से App_Data उपफोल्डर में नहीं हैं - उन्हें /images फ़ोल्डर या कुछ और उचित में डालें।

8

छवियों को कभी भी App_Data फ़ोल्डर में संग्रहीत नहीं किया जाना चाहिए। यह उन फ़ाइलों के लिए आरक्षित है जिन्हें उपयोगकर्ता को सीधे एमएमबी डेटाबेस फाइलों जैसे कि

साइट के रूट से /Resources या /Resources/Images फ़ोल्डर बनायेगा।

+0

धन्यवाद क्रिस ... –

+0

हाय सब, लेकिन समस्या यह है कि जब मैं रूट में '/ संसाधन/छवियां' फ़ोल्डर बनाने की कोशिश करता हूं तो मुझे पहुंच से वंचित त्रुटि मिलती है। (जब साइट आईआईएस में होस्ट की जाती है)। व्हाट है आईआईएस उपयोगकर्ता खाते w./o के लिए रूट में निर्देशिका बनाने के लिए सबसे अच्छी दृष्टिकोण पूरी रूट निर्देशिका पर उपयोगकर्ता खाता अनुमति दे रही है? क्या यह बिल्कुल संभव है? जब मैं रूट के अंदर निर्देशिका बनाने की कोशिश करता हूं तो मुझे पहुंच से वंचित त्रुटि मिलती है । – Sagar

3

ठीक है, असंभव करने का समय ... जबकि आप सीधे ऐप_डाटा फ़ोल्डर से छवियों को लोड नहीं कर सकते हैं, तो आप अपना खुद का http हैंडलर लिख सकते हैं जो ऐप_डाटा फ़ोल्डर से छवि फ़ाइल पढ़ेगा और उसे क्लाइंट को वापस भेज देगा। यह एक काम-आसपास होगा लेकिन आम तौर पर, डेटा डेटा के लिए होता है जो केवल आपका एप्लिकेशन पढ़ सकता है। एक हैंडलर डेटा पढ़ने के द्वारा, आप अभी भी उन छवियों को वापस कर सकते हैं।

लेकिन यह बुरा अभ्यास है और यदि आप मेरे लिए काम करेंगे, तो आपको तुरंत निकाल दिया जाएगा !!!

+2

एप_डेटा से छवियों को पेश करने की इजाजत देने के लिए एएसपीनेट को कैसे बाधित करना है, यह भी एक बुरा विचार है ... –

+0

एक आइडिया साझा करने के लिए धन्यवाद। –

+2

@ क्रिस, मैं सहमत हूं! मैं खुद को आग लूंगा! ;-) –

4

मैं असहमत हूं। App_Data फ़ोल्डर में छवियों को छिपाने और अपना स्वयं का http-हैंडलर बनाने पर आप अपनी छवियों को सुरक्षित करते हैं और उन्हें दिखाने से पहले छवियों पर कॉपीराइट-टेक्स्ट इत्यादि जोड़ सकते हैं।

मैं ऐसा करता हूं जब मेरे पास उच्च चित्र होते हैं, मैं सभी को प्राप्त नहीं करता हूं, और http-Handler छवि को डाउनस्केल करता है और कुछ कॉपीराइट टेक्स्ट पर डाल देता है। महान!

0

App_Data फ़ोल्डर से सामग्री परोसा जा सकता है लेकिन सीधे नहीं।
प्रत्यक्ष पहुंच संभव नहीं है और अप्रत्यक्ष की अनुशंसा नहीं की जाती है। यह जानबूझकर है।

हालांकि वर्चुअल पथ जोड़ना यह कर सकता है। यह question


मुझे लगता है कि शीर्ष तीन उत्तर आपके उद्देश्य को पूरा करते हैं।
या तो वैश्विक या स्थानीय संसाधन फ़ोल्डर में स्टोर छवियां भी विशेष फ़ोल्डर्स हैं और सामग्रियों को प्रोग्रामैटिकल तक पहुंचा जा सकता है।

0

यह निर्भर करता है! ;)

App_Data में छवियों को सहेजने के अच्छे कारण हैं। ऐसी परिस्थितियों में जहां आपके उपयोगकर्ता अपनी फाइलें या लोगो अपलोड कर सकते हैं, यह इन फ़ाइलों की रक्षा करेगा और उन्हें अन्य उपयोगकर्ताओं के लिए सुलभ नहीं करेगा या सार्वजनिक नहीं होगा।

सबसे महत्वपूर्ण, यह प्रति सर्वर/परिनियोजन उदाहरण के लिए अलग-अलग फाइलों का एकमात्र तरीका है।

अपने ऐप को तैनात करते समय आप अपनी परिनियोजन कॉन्फ़िगरेशन में "ऐप_Data से फ़ाइलें बहिष्कृत" सक्षम करके प्रति सर्वर उदाहरण उपयोगकर्ताओं द्वारा अपलोड की गई इन फ़ाइलों को सुरक्षित कर सकते हैं।

यदि आप यूआरएल द्वारा इन फ़ाइलों तक पहुंचना चाहते हैं तो उदाहरण के लिए एक डाउनलोड हैंडलर, downloadfile.ashx का उपयोग करें।

उम्मीद है कि इससे मदद मिलती है।

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