मैं 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 });
}
});
1 उत्तर
मुझे लगता है कि आपकी स्क्रिप्ट लगभग सही है और आपकी स्क्रिप्ट निम्नलिखित 3 बिंदुओं को संशोधित करके काम करती है।
संशोधन बिंदु:
- जब आप डिस्क API v3 का उपयोग करते हैं, तो कृपया
title
के बजायname
की संपत्ति का उपयोग करें। base64Data
फ़ाइल कोnew Buffer(data).toString('base64')
द्वारा पुनर्प्राप्त किया जा सकता है।- जब
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 ड्राइव पर एक फ़ाइल अपलोड कर सकती है। इसलिए यदि अन्य त्रुटि होती है, तो यह माना जाता है कि दूसरा भाग जो यह लिपि नहीं है, वह कारण है।
सन्दर्भ:
यदि ये संशोधन आपकी स्थिति के लिए उपयोगी नहीं थे, तो मैं क्षमा चाहता हूँ।
संबंधित सवाल
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।