मेरे पास मेरे आवेदन के सामने के छोर पर एक पीडीएफ जेनरेट की गई फ़ाइल है जिसे मैंने html2pdf प्लगइन का उपयोग करके प्राप्त किया है। मेरे पास मेरे बैक पर एक नोडमेलर सर्वर है जहां मैं फाइलें संलग्न कर सकता हूं और इसे अपनी पसंद के ईमेल पर भेज सकता हूं। क्या कोई तरीका है जिससे मैं पीडीएफ भेज सकता हूं जो कि नोडज के सामने के अंत में उत्पन्न होता है? मैं भी एक्सप्रेस का उपयोग कर रहा हूँ

संपादित करें: आपकी सलाह के आधार पर मैंने किया

 **On the Client side**
var element = document.getElementById('element-to-print');
const elem = document.getElementById('html');
html2pdf().from(element).toPdf().get('pdf').then(function (pdf) {
            window.open(pdf.output('bloburl'), '_blank');
            var formData = new FormData();
            formData.append("filename", pdf);
            axios.post('/upload',formData).then(res => { console.log(res) })
            // formData.append("uploadedFile", fileInputElement.files[0]);
            })

एक्सप्रेस ऐप पर

app.post('/upload', fileUpload(), function(req, res) {  
    const sampleFile = req.files.uploadedFile;
    // do something with file
    res.send('File uploaded');
  })

लेकिन मुझे यह त्रुटि index.js . से आ रही है

लेखन त्रुटि: नल की संपत्ति 'अपलोड की गई फ़ाइल' नहीं पढ़ सकता

0
greenn 2 सितंबर 2018, 23:51

2 जवाब

<form method="post" enctype="multipart/form-data" action="/">
<div>
  <label for="profile_pic">Choose file to upload</label>
  <input type="file" id="profile_pic" name="profile_pic"
      accept=".pdf">
</div>
<div>
  <button>Submit</button>
</div>

इसे नोड पर प्राप्त करने के लिए आपको उसी पथ पर एक नया मार्ग परिभाषित करना होगा।

1
atl3 3 सितंबर 2018, 00:04

हां।

  1. अपने एक्सप्रेस ऐप में बनाएं और एंडपॉइंट / रूट करें
  2. अपने क्लाइंट में http एजेंट जैसे सुपरएजेंट, रिक्वेस्ट या एक्सियोस का उपयोग करें
  3. भेजे जाने वाले डेटा को बनाने के लिए मल्टीपार्ट फॉर्म या फॉर्मडाटा जैसे कुछ का उपयोग करें।
  4. इसे आपके द्वारा एक्सप्रेस में बनाए गए url पर पोस्ट करें।
  5. अटैचमेंट को संभालने के लिए एक्सप्रेस-फाइलअपलोड या बसबॉय जैसे मिडिलवेयर का इस्तेमाल करें।

तो आपके ग्राहक में। आपके पास कुछ ऐसा है

var formData = new FormData();
formData.append("filename", "My awesome file");
formData.append("uploadedFile", fileInputElement.files[0]);

फिर आप उसे Axios . जैसी किसी चीज़ के साथ पोस्ट करते हैं

axios.post('/upload',formData).then(res => { console.log(res) })

अपने एक्सप्रेस ऐप में आप कुछ ऐसा करते हैं

const express = require('express');
const fileUpload = require('express-fileupload');
const app = express();

app.post('/upload', fileUpload(), function(req, res) {  
  const sampleFile = req.files.uploadedFile;
  // do something with file
  res.send('File uploaded');
})
1
Bergur 3 सितंबर 2018, 00:10
मेरे index.js से मुझे TypeError: Cannot read property 'uploadedFile' of null नामक एक त्रुटि मिलती है मेरे पास आपके समान एक्सप्रेस ऐप कोड है लेकिन मैंने अपने क्लाइंट साइड जावास्क्रिप्ट को इस तरह संशोधित किया है
 – 
greenn
3 सितंबर 2018, 04:35
मैंने आपके समाधान के साथ प्रश्न को संशोधित किया
 – 
greenn
3 सितंबर 2018, 04:43
कुछ संकेत 1) आप req.files.uploadedFile को कॉल कर रहे हैं लेकिन आपने इसे अपने क्लाइंट कोड में टिप्पणी की है। अपने क्लाइंट कोड को formData.append("filename", pdf) से बदलें; to formData.append("uploadedFile", pdf) 2) चूंकि आपने वादों को जंजीर से बांधा है, इसलिए कृपया axios के सामने एक रिटर्न जोड़ें। तो यह रिटर्न axios.post बन जाएगा 3) क्या आप वाकई एक्सप्रेस-फाइलअपलोड स्थापित कर चुके हैं? कृपया अपने कंसोल में npm install Express-fileupload --save चलाएँ।
 – 
Bergur
3 सितंबर 2018, 10:36