মাল্টিপার্ট ফিল্ড / ফাইল ডেটা আলাদাভাবে পার্স কিভাবে করবেন?


9

আমি দুবার একটি মাল্টিপার্ট ফর্ম পার্স করতে চাই: একবার আগত ক্ষেত্রগুলি দখল করতে, এবং পরে ফাইল আপলোড প্রক্রিয়া করার জন্য।

আমি আমার নোড অ্যাপের মধ্যে উদ্বেগের যথাযথ বিচ্ছেদ বজায় রাখার চেষ্টা করছি:

  • নিয়ন্ত্রণকারী আগত ক্ষেত্রগুলি পরিচালনা করার জন্য দায়বদ্ধ।
  • মডেল আপলোড ফাইল যুক্তির জন্য দায়ী।

একটি নতুন উদাহরণ তৈরি করার জন্য আমাকে ক্ষেত্রগুলির ডেটাটি মডেলটিতে পাস করতে হবে, তাই ফাইল আপলোড শুরুর আগে ক্ষেত্রগুলির ডেটা উপলব্ধ হওয়া দরকার।

বর্তমানে প্রতিটি form.parse()বা সমমানের ফাংশন উভয় ক্ষেত্র এবং ফাইলকে একত্রে পার্স করে । উদাহরণ: req.pipe(busboy)ফাইল এবং ক্ষেত্র উভয়কেই একসাথে পরিচালনা করে।

আমি নোড-মাল্টিপার্টি, ভয়াবহ, বাসবয়, মাল্টারের মতো মডিউলগুলি পরীক্ষা করেছি। কারও কাছে এর সমাধান নেই বলে মনে হয়।

আমি যা অর্জন করতে চাই তার একটি উদাহরণ এখানে: /programming/22336177/node-js-busboy-parse-fields-and-files-seperatly

এটা কি সম্ভব?


2
অপেক্ষা করুন ... সুতরাং আপনি কি মডেলটিকে যুক্তি এবং নিয়ন্ত্রণের জন্য দায়ী করবেন?
ম্যাথু মার্ক মিলার

ভাল ধরা, সাধারণত উদ্বেগগুলি মিশ্রিত করার জন্য আর্কিটেকচারটি খারাপ। এটি 2 বছর আগে ছিল তাই আমি যখন এই প্রশ্নটি জিজ্ঞাসা করছিলাম তখন আমি ঠিক কী সমস্যাটি সমাধান করছিলাম তা মনে নেই তবে আমি মনে রাখতে পারি যে আমি সংরক্ষণের যুক্তিটি মঙ্গুজ স্কিমা অবজেক্টের অংশ হতে চেয়েছিলাম। মডেলটিতে মঙ্গুজ পদ্ধতি রেখে আমি সহজেই আমার অ্যাপ্লিকেশানের যে কোনও জায়গা থেকে সঞ্চয় করতে পারি। পিছনে ফিরে তাকালে, আমি মনে করি না যে সংরক্ষণের পদ্ধতিটি একটি মডেল পদ্ধতি হিসাবে যথেষ্ট জেনারেল, সম্ভবত এটি একটি পৃথক পরিষেবা পদ্ধতি হিসাবে রাখা উচিত। mongoosejs.com/docs/guide.html
স্কট

1
হ্যাঁ আমি বুঝতে পারি না যে এটি কতটা পুরানো ছিল ... এটি কোনওভাবে আমার "উত্তর দেওয়ার দরকার" সারির শীর্ষে প্রবাহিত হয়েছিল। এবং হ্যাঁ, আমি মনে করি যে দৃ those়তা ক্রিয়াকলাপগুলি ESPECIALLY অব্যাহতভাবে ডেটা থেকে পৃথক রাখা ঠিক আছে যখন এই বিষয়গুলি দুটি মাত্রায় ডেটা স্থানান্তর করতে পারে। নিয়ন্ত্রণকারীর বাইরে জিনিসগুলি স্ক্রু করা এবং চালিয়ে যাওয়া সহজ করে তোলে।
ম্যাথু মার্ক মিলার

@ স্কট "এটি 2 বছর আগে ছিল তাই আমি ঠিক মনে করতে পারি না যে আমি যখন এই প্রশ্নটি জিজ্ঞাসা করছিলাম তখন আমি কোন সমস্যাটি সমাধান করছিলাম" - তবে আপনি এই প্রশ্নটি মুছে ফেলার বিষয়ে বিবেচনা করতে পারেন কারণ এটির উত্তর দেওয়ার সম্ভাবনা কমই ...
টিমোথি ট্রকল

উত্তর:


1

আমি এই প্রশ্নের উত্তর দিতে চাই:

মাল্টিপার্ট ফিল্ড শিরোনামগুলি তাদের সামগ্রীর আগে পড়া কি সম্ভব?

আমি যখন মাল্টিপার্ট আরএফসি তাকান , আমি এই উদাহরণটি দেখি:

From:  Nathaniel Borenstein <nsb@bellcore.com> 
To: Ned Freed <ned@innosoft.com> 
Subject: Formatted text mail 
MIME-Version: 1.0 
Content-Type: multipart/alternative; boundary=boundary42 


--boundary42 
Content-Type: text/plain; charset=us-ascii 

...plain text version of message goes here.... 

--boundary42 
Content-Type: text/richtext 

.... richtext version of same message goes here ... 
--boundary42 
Content-Type: text/x-whatever 

.... fanciest formatted version of same  message  goes  here 
... 
--boundary42-- 

আমি নোট করেছি যে শিরোনামগুলির মতো Content-Typeশরীরের অঙ্গগুলির মধ্যে অবস্থিত। এইভাবে আমি উপসংহারে বলছি, আপনি সমস্ত দেহের আগে সমস্ত শিরোনাম করতে পারবেন না।

এখন আপনার প্রশ্নের:

আমি দুবার একটি মাল্টিপার্ট ফর্ম পার্স করতে চাই: একবার আগত ক্ষেত্রগুলি দখল করতে, এবং পরে ফাইল আপলোড প্রক্রিয়া করার জন্য।

"পার্সিং" দ্বারা আপনি কী বোঝাতে চান এটি নির্ভর করে। HTTP বার্তাটি কখন শেষ হয় তা জানতে পঠন করার সময় কিছু যুক্ত রয়েছে। প্রান্তে শেষে অতিরিক্ত --রয়েছে:

--boundary42--

দুবার পার্স করার জন্য ধারণা:

  • আমি উপসংহারে পৌঁছেছি যে কেউ সকেট থেকে পুরো উত্তরটি অনুলিপি করতে এবং পরে বিশ্লেষণ করতে সক্ষম হওয়া উচিত।
  • আপনি ফাইলের শিরোনামের আগে ফাইলের শিরোনামগুলি পড়তে পারেন তবে সমস্ত ফাইলের সমস্ত শিরোনাম নয়।

এটা কি সম্ভব?

হ্যাঁ, এমন কেস রয়েছে যেখানে এটি সম্ভব (যখন ফাইলটি আপনার আপলোড করা শেষ জিনিস হয়)। আপনার যা প্রয়োজন তা সর্বজনীনভাবে সম্ভব কিনা আমি জানি না কারণ আপনি ঠিক কী করতে চান তা আমি জানি না।

আমি এই বিষয় ব্যাখ্যা আশা করি। যদি এটি সম্পূর্ণ উত্তর না হয় বা আপনি এটিকে অপছন্দ করেন, তবে দয়া করে আমাদের বলুন কারণ অন্যরা প্রশ্নের উত্তর দেওয়ার চেষ্টা করার জন্য এটি মূল্যবান প্রতিক্রিয়া হতে পারে।

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