পোস্টম্যানে একটি ফাইল এবং জেএসওএন ডেটা আপলোড করবেন কীভাবে?


134

আমি স্প্রিং এমভিসি ব্যবহার করছি এবং এটি আমার পদ্ধতি:

/**
* Upload single file using Spring Controller.
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<GenericResponseVO<? extends IServiceVO>> uploadFileHandler(
            @RequestParam("name") String name,
            @RequestParam("file") MultipartFile file,
            HttpServletRequest request,
            HttpServletResponse response) {

    if (!file.isEmpty()) {
        try {
            byte[] bytes = file.getBytes();

            // Creating the directory to store file
            String rootPath = System.getProperty("catalina.home");
            File dir = new File(rootPath + File.separator + "tmpFiles");
            if (!dir.exists()) {
                dir.mkdirs();
            }

            // Create the file on server
            File serverFile = new File(dir.getAbsolutePath() + File.separator + name);
            BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
            stream.write(bytes);
            stream.close();

            System.out.println("Server File Location=" + serverFile.getAbsolutePath());

            return null;
        } catch (Exception e) {
            return null;
        }
    }
}


আমার পোস্টম্যান এবং ফাইলটিতে সেশন আইডি পাস করতে হবে। আমি এটা কিভাবে করবো?

উত্তর:


221

পোস্টম্যানে, POST এ পদ্ধতি টাইপ করুন ।

তারপরে বডি -> ফর্ম-ডেটা নির্বাচন করুন -> আপনার প্যারামিটারের নাম লিখুন ( আপনার কোড অনুসারে ফাইল )

এবং মান কলামের পাশে ডানদিকে, ড্রপডাউন "পাঠ্য, ফাইল" থাকবে , ফাইল নির্বাচন করুন । আপনার চিত্র ফাইলটি চয়ন করুন এবং এটি পোস্ট করুন।

"পাঠ্য" ভিত্তিক প্যারামিটারের বিশ্রামের জন্য , আপনি পোস্টম্যানের মতো এটির মতো পোস্ট করতে পারেন। কেবলমাত্র প্যারামিটারের নাম লিখুন এবং ডান দিকের ড্রপডাউন মেনু থেকে "পাঠ্য" নির্বাচন করুন এবং এর জন্য কোনও মান লিখুন, প্রেরণ বোতামটি চাপুন। আপনার নিয়ামক পদ্ধতি কল করা উচিত।


4
কেন POST? কি হবে PUT?
সবুজ

4
"কাজ করে না" বলতে কী বোঝ? আমাদের ইস্যুটি সহজেই ডিবাগ করার জন্য আপনি আপনার কোডটি কেন দেখান না?
সুমিত বাদায়

2
আমি লেখার অংশটি Stringবরাবরের মতো পাই । এটি আমার ডিটিওতে মানচিত্র দেয় না কেন? @PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto ) আইএম এই ক্ষেত্রে পোস্টম্যানের কাছ থেকে প্রয়োজনীয়টি প্রেরণ করতে মোটেও সক্ষম নন
অরুণ

@ অরুনগৌদা আপনার প্রশ্নটি নতুন প্রশ্ন হিসাবে পোস্ট করার চেষ্টা করুন। যেহেতু এটি এখানে প্রশ্ন পোস্টারের থেকে আলাদা এবং প্রদত্ত উত্তরগুলি ওপি পোস্ট করেছেন এমন প্রশ্নের সাথে সম্পর্কিত।
সুমিত বাদায়

1
আমি আমার সমাধান খুঁজে পেয়েছি। এটি RequestDtoস্বয়ংক্রিয়ভাবে মানচিত্র হবে না । আমি এটিকে স্ট্রিং হিসাবে নিয়েছি, পার্স Jsonকরেছি এবং RequestDtoস্পষ্টভাবে ম্যাপ করেছি ।
অরুণ গওদা

111

অনুপস্থিত ভিজ্যুয়াল গাইড

আপনাকে প্রথমে প্রায়-অদৃশ্য ফ্যাকাশে-ধূসর-অন-হোয়াইট ড্রপডাউনটি খুঁজে বার করতে হবে Fileযার জন্য Choose Filesবোতামটি আনলক করে এমন ম্যাজিক কী is

আপনি চয়ন করার পরেPOST , তারপরে চয়ন করুন Body->form-data, তারপরে ফাইল ড্রপডাউনটি সন্ধান করুন এবং তারপরে 'ফাইল' চয়ন করুন, তবেই 'ফাইলগুলি চয়ন করুন' বোতামটি যাদুতে প্রদর্শিত হবে:

পোস্টম্যান পোষ্ট ফাইল সেটআপ - (পাঠ্য, ফাইল) ড্রপডাউন হাইলাইট করা


1
আপনি ঠিক বলেছেন যে এর জন্য ইউআই অ-দীক্ষিতের কাছে অদৃশ্য। ভিজ্যুয়াল সংস্করণের জন্য আপনাকে ধন্যবাদ!
বিজয়

আমার যদি এক্সএমএল বডি পেডলোড এবং সংযুক্তি থাকে তবে কী হবে?
tuxErrante

Gce এর উত্তর বলে মনে হচ্ছে আপনি সহজেই এটি কল্পনা করতে পারেন? আমি নিশ্চিত নই . মাল্টি-পার্ট মাইম ফর্ম্যাট সম্পর্কে শিখতে আপনাকে কীভাবে সংযুক্তি এবং এক্সএমএলকে একটি একক নথিতে সংযুক্ত করতে হবে তা শিখতে হতে পারে। যা খুব জটিল নয়, আপনি হাতে বহুগুণ মাইম বডি তৈরি করতে পারেন।
ক্রিস এফ ক্যারল

দু'বছর পরেও ইউআইয়ের কোনও উন্নতি হয়নি।
সাবুনকু

47

আপনি এটি এইভাবে করতে পারে:

postman_file_upload_with_json


8
আপনি কোন 6 টি শিরোনাম সেট করেছেন?
সবুজ

1
এই সমাধানটি আমার পক্ষে কাজ করে। কোনও শিরোনাম পাস করেনি এবং এটি ঠিকঠাক কাজ করছে। ধন্যবাদ। জেএসওন পাস করা আমার পক্ষে একটি জটিল বিষয় ছিল। :)
গৌরব শর্মা

হা, চতুর - আমার করণটির শেষ দিকটি পরিবর্তন করেছে :) কিছুটা কুরুচিপূর্ণ তবে অতি সুবিধাজনক
ক্রিস কোস্টন

আপনি যা বলতে চাইছেন তা ব্যাখ্যা করতে পারেন? @ ক্রিসকোস্টন
টালালকো

17

এটার মত :

এখানে চিত্র বর্ণনা লিখুন

বডি -> ফর্ম-ডেটা -> ফাইল নির্বাচন করুন

আপনাকে অবশ্যই "নাম" এর পরিবর্তে "ফাইল" লিখতে হবে

এছাড়াও আপনি বডি -> কাঁচা ক্ষেত্র থেকে জেএসএন ডেটা পাঠাতে পারেন। (কেবল জেএসএন স্ট্রিং পেস্ট করুন)


3
আসলে আমার একটি পরিষেবার জন্য কিছু মান এবং পোস্টম্যানে ফাইল পাস করতে হবে এটি সম্ভব
হরিকৃষ্ণান কেএন

1
শিরোলেখ? কি শিরোনাম সেট করতে?
সবুজ

11
প্রশ্নটি জাসন ডেটা আপলোড করার জন্যও জিজ্ঞাসা করে, যা এখানে এই উত্তরে আওতায় নেই।
রোহিত

: এই করার সঠিক উপায় হল stackoverflow.com/questions/21329426/...
dassum

10
  1. কোনও শিরোনাম দেবেন না।
  2. আপনার জসন ডেটা একটি .json ফাইলের মধ্যে রাখুন।
  3. আপনার উভয় ফাইল নির্বাচন করুন একটি আপনার .txt ফাইল এবং অন্যটি আপনার অনুরোধের পরম কীগুলির জন্য .json ফাইল।

এটি একটি ভাল উত্তর .. এটি এমন এক ক্ষেত্রে ব্যবহার করা যেতে পারে যেখানে মাল্টি পার্ট পেলোডে একটি জসন পেইড সহ একাধিক ফাইল আপলোড করতে হয় ..
কিরণ

আপনি যদি JSON ডেটার পাশাপাশি কোনও ফাইল প্রেরণ করতে চান তবে এটি সবচেয়ে সঠিক উত্তর। উদাহরণস্বরূপ কোনও ফাইল নির্বাচন করা এবং তারপরে JSON ডেটা একক JSON স্ট্রিং মান হিসাবে পাস করা বা মানগুলি বিভক্ত করা কার্যকর হয় না (সম্ভবত শেষ পয়েন্টের উপর নির্ভর করে তবে আমি এটি যাচাই করতে পারি না)। : এটা এখানে উল্লেখ করা হয় github.com/postmanlabs/postman-app-support/issues/3331
Anto

8

আপনি ফাইল আপলোড করুন মত প্রয়োজন একাধিক ফর্ম তথ্য এবং সেন্ড ব্যবহার JSON একই তথ্য (DTO বস্তুর) পোষ্ট অনুরোধ

কন্ট্রোলারে স্ট্রিং হিসাবে ইওর জেএসওএন অবজেক্টটি পান এবং এই লাইনটি যুক্ত করে এটি ডিসেরায়ালাইজ করুন

ContactDto contactDto  = new ObjectMapper().readValue(yourJSONString, ContactDto.class);

1
আপনি আমাকে বলতে পারেন যে দুটি শিরোলেখ কী ​​ব্যবহৃত হয়?
অভ্যাসেক রায়

বিষয়বস্তুর ধরণ: অ্যাপ্লিকেশন / জসন অনুমোদন: বহনকারী (আপনার টোকেনস্ট্রিং)
অজয় কে

হ্যাঁ এটা কাজ করে। ধন্যবাদ। আমি কোডের নীচে ব্যবহার করেছি এবং কাজ করেছি: @ পোষ্টম্যাপিং (মান = কনস্ট্যান্ট.এপিআইএনপিআইটিআইআই + "/ আপলোডফিল") পাবলিক আপলোডফাইরেস্পোনস আপলোড ফাইল (@RequestParam ("ফাইল") মাল্টিপার্ট ফাইল ফাইল, স্ট্রিং জসনফাইভো) U ফাইলআপলোডও ফাইল আপলোডও = নাল; চেষ্টা করুন {fileUploadVo = নতুন অবজেক্টম্যাপার ()। রিডভ্যালু (jsonFileVo, ফাইলআপলোডলোডক্লা); } ধরা (ব্যতিক্রম ই) {ই.প্রিন্টস্ট্যাকট্রেস (); }
আনন্দ_5050

আপনি যোগাযোগের জন্য কন্টেন্ট-টাইপ সেট করতে পারবেন / স্ট্রিং অ্যাপ্লিকেশন / জসন থেকে, আপনি প্রতিটি কি
হ্রিটকু আন্দ্রেই

7

পোস্টম্যান মাল্টিপার্ট ফর্ম-ডেটা সামগ্রী-প্রকার

[শো কলমস] থেকে [সামগ্রীর ধরণ] নির্বাচন করুন এবং তারপরে জেসন পাঠ্যের পরামিতিতে "অ্যাপ্লিকেশন / জসন" এর সামগ্রী-প্রকার সেট করুন।



6

যদি কেউ ফর্ম-ডেটা ফর্ম্যাটে জসন ডেটা প্রেরণ করতে চান তবে কেবল এই জাতীয় ভেরিয়েবলগুলি ঘোষণা করা দরকার

পিয়ন:

আপনি যেমন দেখেন যে, বিবরণ প্যারামিটারটি বেসিক জেসন ফর্ম্যাটে থাকবে, এর ফলাফল:

{ description: { spanish: 'hola', english: 'hello' } }

2

আমার দুটি ফাইল পাস করতে হবে: একটি ফাইল এবং একটি পূর্ণসংখ্যা। আমি এটি এইভাবে করেছি:

  1. আপলোড করার জন্য একটি ফাইল পাস করার দরকার ছিল: সুমিতের উত্তর অনুসারে এটি করেছে।

    অনুরোধের ধরণ: পোস্ট করুন

    দেহ -> ফর্ম-ডেটা

    KEY শিরোনামের অধীনে , ভেরিয়েবলটির নাম প্রবেশ করানো হয়েছে (আমার ব্যাকএন্ড কোডে 'ফাইল')।

    ব্যাকএন্ডে:

    file = request.files['file']

    'ফাইল' এর পাশেই একটি ড্রপ-ডাউন বক্স রয়েছে যা আপনাকে 'ফাইল' বা 'পাঠ্যের' মধ্যে নির্বাচন করতে দেয়। 'ফাইল' চয়ন করুন এবং VALUE শিরোনামের অধীনে , 'ফাইলগুলি নির্বাচন করুন' উপস্থিত হয়েছিল। এতে ক্লিক করে ফাইলটি নির্বাচন করার জন্য একটি উইন্ডো খোলা হয়েছে।

2. একটি পূর্ণসংখ্যা পাস করার প্রয়োজন:

গিয়েছিলাম:

প্যারাম

KEY এর অধীনে ভেরিয়েবলের নাম (উদা: আইডি) এবং VALUE এর অধীনে এর মান (যেমন: 1) প্রবেশ করানো হয়েছে

ব্যাকএন্ডে:

id = request.args.get('id')

কাজ করছে!


2

বসন্তের বিশ্রামে কোডের নীচে ব্যবহার করুন:

@PostMapping(value = Constant.API_INITIAL + "/uploadFile")
    public UploadFileResponse uploadFile(@RequestParam("file") MultipartFile file,String jsonFileVo) {
        FileUploadVo fileUploadVo = null;
        try {
            fileUploadVo = new ObjectMapper().readValue(jsonFileVo, FileUploadVo.class);
        } catch (Exception e) {
            e.printStackTrace();
        }

এখানে চিত্র বর্ণনা লিখুন


2

প্রতিটি ফর্ম ডেটা কীর জন্য আপনি কন্টেন্ট-টাইপ সেট করতে পারেন, কনটেন্ট-টাইপ কলাম যুক্ত করতে ডানদিকে একটি পোস্টম্যান বাটন রয়েছে এবং আপনার কন্ট্রোলারের ভিতরে কোনও স্ট্রিং থেকে আপনাকে জসনকে পার্স করতে হবে না।


1

আপনি যদি কোনও PUTঅনুরোধ করতে চান POSTতবে কেবল একটি অনুরোধ হিসাবে সবকিছু করুন তবে আপনার পরামিতিগুলিতে _method=> যুক্ত করুন ।PUTform-data


1

জসন ডেটা সহ একটি ফাইল রয়েছে এমন মাল্টপার্ট ডেটা প্রেরণের উপায়টি নীচে নীচে পোস্টম্যান বডি ট্যাবে আমাদের সংশ্লিষ্ট জসন কী ক্ষেত্রগুলির বিষয়বস্তুর ধরণটি 'অ্যাপ্লিকেশন / জেসন' এ সেট করতে হবে:

এই লিঙ্ক চিত্রটি আপনাকে জসন ডেটা সহ চিত্রটি প্রেরণের বিষয়ে বলবে


0

আপনি যদি সেশন রাখতে কুকি ব্যবহার করেন তবে আপনি ব্রাউজার থেকে পোস্টম্যানে কুকিগুলি ভাগ করতে ইন্টারসেপ্টর ব্যবহার করতে পারেন ।

কোনও ফাইল আপলোড করার জন্য আপনি পোস্টম্যানের বডি ট্যাবের নীচে ফর্ম-ডেটা ট্যাব ব্যবহার করতে পারেন, যাতে আপনি কী-মান বিন্যাসে ডেটা সরবরাহ করতে পারেন এবং প্রতিটি কীর জন্য আপনি মূল্য পাঠ্য / ফাইলের ধরণ নির্বাচন করতে পারেন। যখন আপনি ফাইল টাইপ বিকল্পটি ফাইলটি আপলোড করতে উপস্থিত হন।


2
আপনি যা পাচ্ছেন 500 এর জন্য you আপনি দয়া করে আরও কিছু বিশদ ভাগ করতে পারেন
সন্দেশ জৈন

-2

ছবি দেখব আমি তোমাকে নিয়ামক, পরিষেবা appinitizer, পিয়ন সম্পর্কে তথ্য পেতে পারেন প্রদান
SMK

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