কেবল আপনি JSON- এ পুরো অনুরোধের বডিটি মুড়ে রাখছেন না, এর অর্থ এই নয় যে multipart/form-data
কোনও একক অনুরোধে JSON এবং ফাইল (গুলি) উভয়ই পোস্ট করা ব্যবহার করা বিশুদ্ধ নয় :
curl -F "metadata=<metadata.json" -F "file=@my-file.tar.gz" http://example.com/add-file
সার্ভার সাইডে (সিউডোকোডের জন্য পাইথন ব্যবহার করে):
class AddFileResource(Resource):
def render_POST(self, request):
metadata = json.loads(request.args['metadata'][0])
file_body = request.args['file'][0]
...
একাধিক ফাইল আপলোড করতে, প্রতিটি জন্য পৃথক "ফর্ম ক্ষেত্র" ব্যবহার করা সম্ভব:
curl -F "metadata=<metadata.json" -F "file1=@some-file.tar.gz" -F "file2=@some-other-file.tar.gz" http://example.com/add-file
... যে ক্ষেত্রে সার্ভার কোড থাকবে request.args['file1'][0]
এবংrequest.args['file2'][0]
বা অনেকের জন্য একইটিকে পুনরায় ব্যবহার করুন:
curl -F "metadata=<metadata.json" -F "files=@some-file.tar.gz" -F "files=@some-other-file.tar.gz" http://example.com/add-file
... যে ক্ষেত্রে request.args['files']
কেবল দৈর্ঘ্যের 2 তালিকা হবে।
বা একক ক্ষেত্রের মাধ্যমে একাধিক ফাইল পাস করুন:
curl -F "metadata=<metadata.json" -F "files=@some-file.tar.gz,some-other-file.tar.gz" http://example.com/add-file
... এই ক্ষেত্রে request.args['files']
সমস্ত ফাইল যুক্ত একটি স্ট্রিং হবে, যা আপনাকে নিজের বিশ্লেষণ করতে হবে - কীভাবে করবেন তা নিশ্চিত নন, তবে আমি নিশ্চিত যে এটি কঠিন নয়, বা পূর্ববর্তী পন্থাগুলি ভাল ব্যবহার করুন use
@
এবং এর মধ্যে পার্থক্য <
হ'ল @
ফাইলটি একটি ফাইল আপলোড হিসাবে সংযুক্ত হয়ে যায়, যেখানে <
ফাইলের সামগ্রীগুলি একটি পাঠ্য ক্ষেত্র হিসাবে সংযুক্ত করে।
পিএস ঠিক এই কারণে যে আমি অনুরোধগুলি curl
উত্পন্ন করার উপায় হিসাবে ব্যবহার করছি POST
তার অর্থ এই নয় যে পাইথনের মতো প্রোগ্রামিং ভাষা থেকে ঠিক একই এইচটিটিপি অনুরোধগুলি প্রেরণ করা যায়নি বা কোনও যথেষ্ট সক্ষম সরঞ্জাম ব্যবহার করা যায় না।