मैं यहाँ VueJS और Laravel की शुरुआत के रूप में पोस्ट कर रहा हूँ। मैं एक ऐसी समस्या में फंस गया हूँ जिसे घंटों खोज करने के बाद भी मैं अपने आप ठीक नहीं कर सकता।

मैं जानना चाहता हूं कि किसी फॉर्म (जटिल डेटा और फाइलों) के इनपुट को सही तरीके से कैसे भेजें और वापस पाएं।

फॉर्म की सबमिट विधि यहां दी गई है:

onSubmit: function () {
  var formData = new FormData();
  formData.append("data", this.model.data);
  formData.append("partData", this.model.partData);
  if (this.model.symbolFile != null) {
    formData.append("symbolFile", this.model.symbolFile);
  }
  if (this.model.footprintFile != null) {
    formData.append("footprintFile", this.model.footprintFile);
  }
  axios
    .post("/api/updatecomponent", formData, {
      headers: {
        "Content-Type": "multipart/form-data",
      },
    })
    .then((res) => {
      // do something with res
      // console.log(res);
    })
    .catch((err) => {
      /* catch error*/
      console.log(err);
    });
},

परिवर्तनीय डेटा और पार्टडाटा में एकाधिक स्ट्रिंग फ़ील्ड होते हैं जो मेरे डेटाबेस में विभिन्न तालिकाओं में संग्रहीत किए जाएंगे। उदाहरण: डेटा {स्ट्रिंग वैल्यू, स्ट्रिंग टॉलरेंस, स्ट्रिंग पावर}

यहाँ सर्वर साइड में नियंत्रक की विधि है:

public function updateComponent(Request $req)
{
   $data = $req->input('data');
   $partData = $req->input('partData');
   $symbolFile = $req->file('symbolFile'); // is null if the user did not modify the symbol
   $footprintFile = $req->file('symbolFile'); // is null if the user did not modify the footprint
   // etc...
}

मैं फाइलें प्राप्त करने में सक्षम हूं, उसके लिए सब कुछ काम करता है और मैं उन्हें स्टोर और पढ़ सकता हूं :)

लेकिन, समस्या यह है कि मैं अपने डेटा या पार्टडैट को ठीक से वापस पाने में असमर्थ हूं। जब मैं करता हूं :

dd($partData);

मुझे कंसोल में परिणाम मिला:

"[object Object]"

मुझे पूरा यकीन है कि मैं फॉर्मडाटा का सही ढंग से उपयोग नहीं करता हूं, लेकिन घंटों की खोज के बाद, मुझे फॉर्मडाटा को डेटा और पार्टडाटा देने का अच्छा तरीका नहीं मिल रहा है।

मेरा कोड डेटा और पार्टडाटा के लिए अच्छा काम कर रहा था जब तक कि मैं फ़ाइल अपलोड का समर्थन करने के लिए फॉर्मडाटा नहीं जोड़ता :(

आपके सहयोग के लिए धन्यवाद :)

1
Pascal 19 जिंदा 2021, 10:11
1
नमस्ते, आप लगभग वहां हैं, आपने सामग्री-प्रकार बहु-भाग/फॉर्म-डेटा किया है, लेकिन आपको फ़ाइल को थोड़ा अलग तरीके से जोड़ना चाहिए, यह उत्तर विवरण प्रदान कर सकता है: stackoverflow.com/ प्रश्न/43013858/…
 – 
Joshua Angnoe
19 जिंदा 2021, 10:19
1
json_decode($req->input('data')) आज़माएं।
 – 
Tpojka
19 जिंदा 2021, 10:48
@Tpojka, धन्यवाद! आपने सही देखा
 – 
Pascal
17 फरवरी 2021, 09:42

1 उत्तर

सबसे बढ़िया उत्तर

यहां मेरा कामकाजी कोड:

ग्राहक की ओर:

var formData = new FormData(); // create FormData
formData.append("subcat", this.subcategory);// append simple type data
formData.append("data", JSON.stringify(this.model.data));// append complex type data
axios // send FormData
  .post(url, formData, {
    headers: {
      "Content-Type": "multipart/form-data",
    },
  })
  .then((res) => {
    // do something with res
    // console.log(res);
  })
  .catch((err) => {
    /* catch error*/
    console.log(err);
  });

सर्वर साइड:

public function createComponent(Request $req)
{
    $subcategory = $req->input('subcat'); // get the input parameter named 'subcat' (selected subcategory)        
    $data = json_decode($req->input('data'), true); // get the input, decode the jason format, force to return the result as an array
}

मुझे आशा है कि यह अन्य लोगों की मदद करेगा :)

0
Pascal 17 फरवरी 2021, 09:50