मेरे पास एक एएसपी.नेट एमवीसी 4 वेब एपीआई नियंत्रक विधि है जो फ़ाइल आईडी की एक सूची उत्तीर्ण हो जाती है और उन फ़ाइलों के लिए थंबनेल छवियां लौटाती है।एक वेबएपी विधि से कई बाइनरी फ़ाइलों को प्रस्तुत करने का सबसे अच्छा तरीका क्या है?
तो, ग्राहक सांख्यिक आईडी की सूची में पारित हो सकता है (उदाहरण के लिए 10, 303, 29), और विधि एक सूची है, जहां एक ThumbnailImage इस तरह एक सा लग रहा है देता है:
class ThumbnailImage
{
public int Id { get; set; }
// Some other stuff
public byte[] RawData { get; set; }
}
कारण यह है कि कॉलर प्रति आइटम एक कॉल करने के बजाए आईडी की एक सूची में गुजरता है, उम्मीद है कि यह स्पष्ट हो सकता है - डाउनलोड करने के लिए दर्जन या सैकड़ों आइटम हो सकते हैं, और मैं उन सभी HTTP ट्रैफिक से बचने की कोशिश कर रहा हूं जिन्हें उन्हें व्यक्तिगत रूप से डाउनलोड करने की आवश्यकता होगी ।
वर्तमान में, मैं RestSharp और JSON.NET का उपयोग कर रहा हूं, और इसलिए मेरा थंबनेल छवि वस्तुएं तार पर JSON के रूप में पारित की जा रही हैं। यह सादगी-कोडिंग बिंदु दृश्य से ठीक है, लेकिन जेएसओएन उस बाइनरी डेटा का प्रतिनिधित्व करने का एक प्रभावी तरीका नहीं है।
तो, मुझे लगता है कि मुझे कच्चे बाइट को ऑक्टेट-स्ट्रीम के रूप में वापस करना चाहिए ... हालांकि, जबकि मैं इसे एक छवि के लिए आसानी से कर सकता हूं, मुझे यकीन है कि इसे करने का सबसे अच्छा तरीका नहीं है कई छवियों के लिए, विशेष रूप से जब मुझे प्रत्येक फ़ाइल के लिए आईडी और विविध अन्य जानकारी वापस करने की आवश्यकता होती है। (आईडी आवश्यक है क्योंकि परिणामों को किसी दिए गए क्रम में वापस नहीं किया जाएगा - और कुछ फाइलें गायब हो सकती हैं)।
मैं बस सब कुछ टुकड़ों प्रतिक्रिया धारा में लिख सकता है, ताकि प्रत्येक आइटम के लिए मैं आईडी (उपयुक्त रूप से इनकोडिंग), छवि डेटा की लंबाई के बाद, छवि डेटा खुद के द्वारा पीछा किया, और फिर लिखने का पालन किया आदि अगले आइटम के लिए एक ही बात,
फोन करने वाले तो बस आईडी की धारा से पढ़ने जब तक यह समाप्त हो गया था, एन्कोडिंग के बारे में मान्यताओं बनाने (और लंबाई!) रखेंगे, आदि
द्वारा मुझे लगता है कि यह काम करेगा, लेकिन यह गुंजाइश लगता है - क्या कोई बेहतर तरीका है?
कैसे होगा ग्राहक छवियों का उपयोग करते हैं? क्या वेब पेज में प्रदर्शित होने के लिए छवियां हैं? या एक संग्रह के रूप में डाउनलोड करने के लिए? कुछ और? – EBarr
आश्चर्य है कि क्या आप एक मल्टीपार्टकंटेंट के रूप में प्रतिक्रिया भेज सकते हैं जहां आंतरिक सामग्री स्ट्रीम सामग्री के बाइट्स की कच्ची धारा हो सकती है –
@EBarr: मैं क्लाइंट एप्लिकेशन भी लिख रहा हूं, इसलिए यह एक बंद वातावरण है। मैं WinForms एप्लिकेशन (खोज परिणाम थंबनेल के रूप में) के भीतर छवियों को प्रदर्शित करूँगा। –