অনুরোধ ব্যবহার করে নোড.জেজে বাইনারি সামগ্রী পান


135

আমি GETবাইনারি ডেটা ব্যবহার করে চেষ্টা করছিলাম requestএবং এর মতো কিছু ছিল:

var requestSettings = {
    method: 'GET',
    url: url,
};
request(requestSettings, function(error, response, body) {
    // Use body as a binary Buffer
}

তবে bodyসর্বদা কয়েকটি বাইট প্রত্যাশার চেয়ে আলাদা ছিল। আরও তদন্তের পরে আমি জানতে পারি যে requestঅনুমান bodyকরাটা স্ট্রিং এবং সমস্ত অ-ইউনিকোড বাইট প্রতিস্থাপন করেছে।

আমি যুক্ত করার চেষ্টা করেছি

encoding: 'binary'

থেকে requestSettingsকিন্তু এটি কোন উপকারে আসেনি।

আমি কীভাবে বাইনারি ডেটা পেতে পারি?

উত্তর:


300

ঠিক আছে, প্রচুর খোঁড়াখুঁড়ি করার পরে, আমি জানতে পারি যে এটি requestSettingsথাকা উচিত:

encoding: null

এবং তারপরে bodyটাইপ হবে Buffer, পরিবর্তে ডিফল্ট, যা স্ট্রিং।


50
কি এক অযৌক্তিক দুঃস্বপ্ন। এটিকে শিকার করতে আমাকে 12 ঘন্টা সময় নিয়েছে। মনে হচ্ছে নোড রিকুয়েস্ট মডিউলটি ডিফল্টরূপে প্রতিক্রিয়ার সামগ্রীটিতে আগত ডেটাগুলিকে ইউটিএফ -8 হিসাবে বিবেচনা করে এবং স্বয়ংক্রিয়ভাবে কোনও নন-ইউটিএফ -8 বাইট সিকোয়েন্সগুলি জাঙ্ক (তবে বৈধ ইউটিএফ -8) অক্ষরে রূপান্তর করে। 'মিমিটাইপ' ইত্যাদি সেটিংয়ের পরিমাণ নেই (এটি প্রতিক্রিয়া ডেটার জন্য বলে মনে করা হয় না ) encoding: nullএটিই একমাত্র বিকল্প যা কাজ করে। এবং - খুব খারাপভাবে নথিভুক্ত। এটি সম্পর্কে নোড রিকোয়েস্ট ডকুমেন্টেশনে একটি স্পষ্ট সতর্কতা থাকা উচিত খাঁটি বাইনারি তথ্য পুনরুদ্ধার করতে
.ধন্যবাদ

2
@ সটায়ানবেরভ, আমি আপনাকে এই উত্তরটি সহায়ক বলে খুঁজে পেয়েছি বলে আনন্দিত, কিন্তু যেহেতু আমি এই উত্তরটি লিখেছিলাম 5 বছর পরে, প্যাকেজটি রেডমে বেশ কয়েকটি জায়গায় এই সমাধানটি হাইলাইট করার জন্য সংশোধন করা হয়েছিল। তদতিরিক্ত, আমি এই প্যাকেজের পরিবর্তে প্রতিশ্রুতিগুলিকে সমর্থন করে এমন একটি প্যাকেজ ব্যবহার করার পরামর্শ দিচ্ছি।
গিলজেড

@ গিলজ, আপডেটের জন্য ধন্যবাদ! আমি আসলে এই ছাপের মধ্যে ছিলাম যে এনকোডিংটি ডিফল্টরূপে বাতিল হয়ে যায়। এছাড়াও, সমস্যাটি একটি উত্তরাধিকার প্রজেক্টে উঠে এসেছিল, একটি সুপার ওল্ড নোড সংস্করণে সেট করা হয়েছে এবং কেবলমাত্র সর্বত্রই কলব্যাক।
স্টোয়ান বেরভ

এটি আবার দৌড়ে - যুগে যুগে এটি ব্যবহার করেন নি। এনকোডিং: উদ্ধার করতে
পাইরো

0

গৃহীত উত্তর আমার সমস্যার সমাধান করেনি। আমি একরকম মূর্ত যে gzip: trueকাজ করেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.