मैं Google ड्राइव पर नोडज एक्सप्रेस का उपयोग करके फ़ाइल अपलोड करने का प्रयास कर रहा हूं, डाकिया से पोस्ट अनुरोध भेज रहा हूं, मुझे त्रुटि मिली "0 माइम भागों के साथ अमान्य मल्टीपार्ट अनुरोध।", समस्या अनुरोध निकाय के भीतर है, मुझे लगता है, कोई भी विचार हल करने के लिए आभारी होगा यह मुद्दा या कोई सुझाव, धन्यवाद।

let file = req.files.form_doc_20;

var contentType = file.type || 'application/octet-stream';
let parentId = 'root';

const boundary = '-------314159265358979323846';
const delimiter = "\r\n--" + boundary + "\r\n";
const close_delim = "\r\n--" + boundary + "--";

var data = fs.readFileSync(file.path);
let metadata = {
    title: file.name,
    mimeType: contentType,
    parents: [parentId]
};

var base64Data = Buffer(data, 'base64');

var multipartRequestBody =
    delimiter +
    "Content-Type: application/json\r\n\r\n" +
    JSON.stringify(metadata) +
    delimiter +
    "Content-Type: " + contentType + "\r\n" +
    "Content-Transfer-Encoding: base64\r\n" +
    "\r\n" +
    base64Data +
    close_delim;

let options = {
    url: 'https://www.googleapis.com/upload/drive/v3/files',
    method: "POST",
    headers: {
        'Content-Type': "multipart/related; boundary=\"" + boundary + "\"",
        'Authorization': "Bearer " + req.body.token_configuration.access_token,
    },
    body: multipartRequestBody,
    qs: {
        fields: "id, name, mimeType, modifiedTime, size",
        uploadType: 'multipart'
    },
    json: true
};

helper.http_request(options, (err1, response) => {
    if (err1) {
        return res.json({ msg: 'Failed to upload the file.', error: response });
    }
    else {
        return res.json({ result: response });
    }
});
2
Usira 6 फरवरी 2019, 22:41

1 उत्तर

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

मुझे लगता है कि आपकी स्क्रिप्ट लगभग सही है और आपकी स्क्रिप्ट निम्नलिखित 3 बिंदुओं को संशोधित करके काम करती है।

संशोधन बिंदु:

  1. जब आप डिस्क API v3 का उपयोग करते हैं, तो कृपया title के बजाय name की संपत्ति का उपयोग करें।
  2. base64Data फ़ाइल को new Buffer(data).toString('base64') द्वारा पुनर्प्राप्त किया जा सकता है।
  3. जब options में से json: true का उपयोग किया जाता है, तो Invalid multipart request with 0 mime parts. की त्रुटि होती है। कृपया इसे हटा दें।

संशोधित स्क्रिप्ट:

कृपया निम्नानुसार संशोधित करें।

1:

title: file.name,
name: file.name,

2:

var base64Data = Buffer(data, 'base64');
var base64Data = new Buffer(data).toString('base64');

3:

कृपया json: true को options से हटा दें।

ध्यान दें:

  • यह संशोधित स्क्रिप्ट मानती है कि आपका परिवेश डिस्क API का उपयोग करके फ़ाइलें अपलोड कर सकता है। यदि एपीआई से संबंधित त्रुटि होती है, तो कृपया पुष्टि करें कि ड्राइव एपीआई सक्षम है या नहीं। और कृपया एक्सेस टोकन सहित स्कोप की पुष्टि करें।
  • मैं पुष्टि कर सकता हूं कि संशोधित स्क्रिप्ट Google ड्राइव पर एक फ़ाइल अपलोड कर सकती है। इसलिए यदि अन्य त्रुटि होती है, तो यह माना जाता है कि दूसरा भाग जो यह लिपि नहीं है, वह कारण है।

सन्दर्भ:

यदि ये संशोधन आपकी स्थिति के लिए उपयोगी नहीं थे, तो मैं क्षमा चाहता हूँ।

2
Tanaike 7 फरवरी 2019, 03:23