Postman में एक फ़ाइल और JSON डेटा कैसे अपलोड करें?


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 के लिए विधि प्रकार सेट करें ।

फिर Body -> form-data -> अपना पैरामीटर नाम ( अपने कोड के अनुसार फ़ाइल ) चुनें

और मान स्तंभ के बगल में दाईं ओर, ड्रॉपडाउन "पाठ, फ़ाइल" होगा , फ़ाइल चुनें । अपनी छवि फ़ाइल चुनें और उसे पोस्ट करें।

बाकी "पाठ" आधारित मापदंडों के लिए , आप इसे पोस्टमैन के साथ सामान्य रूप से पोस्ट कर सकते हैं। बस पैरामीटर नाम दर्ज करें और उस दाईं ओर ड्रॉपडाउन मेनू से "पाठ" चुनें और इसके लिए कोई भी मूल्य दर्ज करें, भेजें बटन को हिट करें। आपके नियंत्रक विधि को बुलाया जाना चाहिए।


4
क्यों POST? किस बारे में PUT?
ग्रीन

4
आपको "काम नहीं करता" से क्या मतलब है? आप हमें आसानी से मुद्दा डिबग करने के लिए अपना कोड क्यों नहीं दिखाते हैं?
सुमित बदया

2
मुझे Stringहमेशा की तरह पाठ भाग मिलता है । यह मेरे डीटीओ को मैप क्यों नहीं करता है? @PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto ) Iam इस मामले में डाकिया से अपेक्षित धनराशि भेजने में सक्षम नहीं है
अरुण गौड़ा

@ArunGowda नए प्रश्न के रूप में अपनी क्वेरी पोस्ट करने का प्रयास करें। जैसा कि यह यहाँ प्रश्न पोस्टर से अलग है और दिया गया उत्तर ओपी द्वारा यहाँ पोस्ट किए गए प्रश्न के लिए प्रासंगिक है।
सुमित बदया

1
मुझे अपना हल मिल गया। यह RequestDtoस्वचालित रूप से मैप नहीं होगा । मैंने इसे एक स्ट्रिंग के रूप में लिया, Jsonऔर इसे RequestDtoस्पष्ट रूप से मैप किया ।
अरुण गौड़ा

111

गुम दृश्य गाइड

आपको पहले लगभग अदृश्य पीला-ग्रे-ऑन-व्हाइट ड्रॉपडाउन ढूंढना होगा , Fileजिसके लिए Choose Filesबटन को अनलॉक करने वाली जादू की कुंजी है ।

चुनने के बादPOST , फिर चुनें Body->form-data, फिर फ़ाइल ड्रॉपडाउन ढूंढें, और फिर 'फ़ाइल' चुनें, उसके बाद ही 'फ़ाइलें चुनें' बटन दिखाई देगा:

पोस्टमैन पोस्ट फ़ाइल सेटअप - (पाठ, फ़ाइल) ड्रॉपडाउन पर प्रकाश डाला गया


1
आप सही हैं कि इसके लिए UI गैर-आरंभिक के लिए अदृश्य है। दृश्य संस्करण के लिए धन्यवाद!
विजय

क्या होगा अगर मेरे पास XML बॉडी पेलोड और अटैचमेंट है?
tuxErrante

गेस का जवाब लगता है कि आप इसे आसानी से पर्याप्त कर सकते हैं? मुझे यकीन नहीं है । आपको बहु-भाग माइम प्रारूप के बारे में सीखकर अनुलग्नक और XML को एक ही दस्तावेज़ में संयोजित करना सीखना होगा। जो बहुत जटिल नहीं है, आप हाथ से मल्टीपार्ट माइम बॉडी बना सकते हैं।
क्रिस एफ कैरोल

दो साल बाद, यूआई में कोई सुधार नहीं हुआ है।
सबुनकु

47

शायद आप इसे इस तरह से कर सकते हैं:

postman_file_upload_with_json


8
आपने वहां 6 हेडर क्या स्थापित किए हैं?
ग्रीन

1
यह समाधान मेरे लिए काम करता है। किसी हेडर को पास नहीं किया और यह ठीक काम कर रहा है। धन्यवाद। JSON पास करना मेरे लिए मुश्किल हिस्सा था। :)
गौरव शर्मा

हा, होशियार - करने के लिए मेरे समापन बिंदु बदल :) :) थोड़ा बदसूरत लेकिन सुपर सुविधाजनक
क्रिस Koston

क्या आप बता सकते हैं कि आप किस बारे में बात कर रहे हैं? @ क्रिसहॉस्टन
tlalco

17

ऐशे ही :

यहाँ छवि विवरण दर्ज करें

बॉडी -> फॉर्म-डेटा -> फाइल का चयन करें

आपको "नाम" के बजाय "फ़ाइल" लिखना होगा

इसके अलावा आप JSON डेटा को बॉडी -> कच्चे क्षेत्र से भेज सकते हैं। (सिर्फ JSON स्ट्रिंग पेस्ट करें)


3
वास्तव में मुझे कुछ मूल्यों को पास करने और एक सेवा के लिए डाकिया में फाइल करने की आवश्यकता है, यह संभव है
हरिकृष्णन केएन

1
हेडर? क्या हेडर सेट करने के लिए?
ग्रीन

11
यह सवाल जस का तस डेटा अपलोड करने के लिए कहता है, जो इस उत्तर में यहां नहीं है।
रोहित

इसे करने का सही तरीका: stackoverflow.com/questions/21329426/…
dassum

10
  1. कोई हेडर न दें।
  2. अपने। डेटा को एक .json फ़ाइल के अंदर रखें।
  3. अपनी दोनों फ़ाइलों का चयन करें एक आपकी .txt फ़ाइल और अन्य है .json फ़ाइल आपके अनुरोध की परम कुंजी के लिए।

यह एक अच्छा उत्तर है .. इसका उपयोग उन मामलों के लिए भी किया जा सकता है, जहां मल्टी-पार्ट पेलोड में json पेलोड के साथ कई फाइल अपलोड करनी होती हैं ..
किरण

यह सबसे सही उत्तर है यदि आप एक फ़ाइल और साथ ही JSON डेटा भेजना चाहते हैं। एक फ़ाइल का चयन करने और फिर JSON डेटा को एकल JSON स्ट्रिंग मान के रूप में पारित करने या मानों को विभाजित करने वाले उदाहरण काम नहीं करते हैं (संभवतः अंत बिंदु पर निर्भर करता है लेकिन मैं इसे सत्यापित नहीं कर सकता)। इसका उल्लेख यहाँ भी किया गया है: github.com/postmanlabs/postman-app-support/issues/3331
Anto

8

यदि आपको प्रपत्र डेटा का उपयोग करके मल्टीपार्ट में अपलोड फ़ाइल जैसी आवश्यकता है और एक ही POST अनुरोध में json डेटा (Dto ऑब्जेक्ट) भेजें

कंट्रोलर में स्ट्रिंग के रूप में योर जेन्सन ऑब्जेक्ट प्राप्त करें और इस लाइन को जोड़कर डिसेरिएलाइज़ करें

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

1
क्या आप मुझे बता सकते हैं कि दो हेडर का उपयोग क्या है?
अभिसक रॉय

कंटेंट-टाइप: एप्लीकेशन / जसन ऑथराइजेशन: बियरर (yourTokenString)
अजय

हाँ, यह काम किया। धन्यवाद। मैंने नीचे दिए गए कोड का उपयोग किया और काम किया: @PostMapping (मान = Constant.API_INITIAL + "/ uploadFile") सार्वजनिक UploadFileResponse uploadFile (@RequestParam ("file") MultipipFile फ़ाइल, स्ट्रिंग jsonFileVo) {FileUploadVo fileUploadVo = null; {fileUploadVo = new ObjectMapper ()। readValue (jsonFileVo, FileUploadVo.class) आज़माएं; } पकड़ (अपवाद ई) {e.printStackTrace (); }
आनंद_ ५०५०

आप कन्टैंट-टाइप को contactDtoString पर एप्लिकेशन / जसन पर सेट कर सकते हैं, आप इसे हर कुंजी के लिए कर सकते हैं
Hritcu Andrei

7

पोस्टमैन मल्टीफ़ॉर्म फॉर्म-डेटा सामग्री-प्रकार

[SHOW COLUMNS] से [सामग्री प्रकार] का चयन करें और फिर json पाठ के पैरामीटर के लिए "एप्लिकेशन / json" की सामग्री-प्रकार सेट करें।



6

अगर कोई फॉर्म-डेटा फॉर्मेट में json डेटा भेजना चाहता है, तो उसे इस तरह वेरिएबल घोषित करने की जरूरत है

डाकिया:

जैसा कि आप देखते हैं, विवरण पैरामीटर बेसिक जोंस प्रारूप में होगा, उसी का परिणाम:

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

2

मुझे दोनों पास करने की आवश्यकता थी: एक फ़ाइल और एक पूर्णांक। मैंने इसे इस तरह किया:

  1. अपलोड करने के लिए एक फाइल पास करने की जरूरत है: यह सुमित के जवाब के अनुसार किया।

    अनुरोध प्रकार: POST

    बॉडी -> फॉर्म-डेटा

    शीर्षक कुंजी के तहत , चर का नाम (मेरे बैकएंड कोड में 'फ़ाइल') दर्ज किया।

    बैकएंड में:

    file = request.files['file']

    'फ़ाइल' के बगल में, एक ड्रॉप-डाउन बॉक्स है जो आपको 'फ़ाइल' या 'टेक्स्ट' के बीच चयन करने की अनुमति देता है। 'फ़ाइल' चुनें और शीर्षक VALUE के अंतर्गत , 'फ़ाइलों का चयन करें' दिखाई दिया। इस पर क्लिक किया जिसने फ़ाइल चुनने के लिए एक विंडो खोली।

2. पूर्णांक पास करने के लिए आवश्यक:

के लिए चला गया:

पैरामीटर

के तहत: (आईडी जैसे) अलग-अलग नाम दर्ज किया कुंजी के अंतर्गत: और इसके मूल्य (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

प्रत्येक फ़ॉर्म डेटा कुंजी के लिए आप सामग्री-प्रकार सेट कर सकते हैं, सामग्री-प्रकार कॉलम जोड़ने के लिए दाईं ओर एक डाकिया बटन होता है, और आपको अपने नियंत्रक के अंदर एक स्ट्रिंग से एक json पार्स करने की आवश्यकता नहीं होती है।


1

यदि आप एक PUTअनुरोध करना चाहते हैं, तो बस एक POSTअनुरोध के रूप में सब कुछ करें लेकिन अपने मापदंडों में _method=> जोड़ें ।PUTform-data


1

मुलिटपार्ट डेटा भेजने का तरीका जिसमें जस डेटा के साथ एक फ़ाइल शामिल है, हमें निम्नलिखित जैसे पोस्टमैन बॉडी टैब में संबंधित जॉन्स कुंजी फ़ील्ड की सामग्री-प्रकार को 'एप्लिकेशन / जसन' में सेट करने की आवश्यकता है:

यह लिंक इमेज आपको json डेटा के साथ इमेज भेजने के बारे में बताएगी


0

यदि आप सत्र रखने के लिए कुकीज़ का उपयोग कर रहे हैं, तो आप ब्राउज़र से पोस्टमैन तक कुकीज़ साझा करने के लिए इंटरसेप्टर का उपयोग कर सकते हैं ।

फ़ाइल अपलोड करने के लिए आप पोस्टमैन पर बॉडी टैब के तहत फॉर्म-डेटा टैब का उपयोग कर सकते हैं, जिसमें आप कुंजी-मूल्य प्रारूप में डेटा प्रदान कर सकते हैं और प्रत्येक कुंजी के लिए आप मूल्य पाठ / फ़ाइल के प्रकार का चयन कर सकते हैं। जब आप फ़ाइल प्रकार का विकल्प चुनते हैं तो फ़ाइल अपलोड करने के लिए दिखाई देता है।


2
आपके लिए जो 500 मिल रहे हैं। क्या आप कृपया कुछ और जानकारी साझा कर सकते हैं
संध्या जैन

-3

पिक्स में देखें मुझे बशर्ते कि आप कंट्रोलर, सर्विस, एपिनिटाइजर, पोस्टमैन के बारे में जानकारी प्राप्त कर सकते हैं
smk

कृपया अपने समाधान के रूप में कोड की तस्वीरें पोस्ट न करें। कृपया अपने कोड को उत्तर में ही कॉपी करें।
दास_गीक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.