2015-10-12 9 views
8

मैं Loopback storage service का उपयोग कर एक स्टोरेज कंटेनर में एक फ़ाइल अपलोड करना चाहता हूं।लूपबैक स्टोरेज सेवा, सीधे अपलोड करें (अनुरोध ऑब्जेक्ट के बिना)

लेकिन .upload() method अनुरोध ऑब्जेक्ट की अपेक्षा करता है। लेकिन क्या होगा यदि मैं एक मौजूदा फाइल अपलोड करना चाहता हूं जो सबमिट किए गए फॉर्म से नहीं आ रहा है?

क्या अपलोड हैंडलर को खुश करने के लिए मुझे एक POST अनुरोध नकली करने की आवश्यकता है? ऐसा लगता है कि एक बेहतर तरीका होना चाहिए।

+0

कोशिश नहीं की गई, लेकिन स्ट्रीम प्राप्त करने के लिए विधि है http://apidocs.strongloop.com/loopback-component-storage/#storageservice-prototype-uploadstream। यह स्ट्रीम लौटाता है, आप पाइप का उपयोग कर सकते हैं और स्ट्रीम का उपयोग कर मौजूदा फाइल अपलोड कर सकते हैं। –

उत्तर

3

@RohitArkani hinted के रूप में, फ़ाइल app-cloud.js में फ़ाइल अपलोड का एक संस्करण 1 उदाहरण है जो storageService.uploadStream(container, file, [options], Callback) का उपयोग करता है।

var s3 = new StorageService({ 
    provider: 'amazon', 
    key: "your-amazon-key", 
    keyId: "your-amazon-key-id" 
}); 

var fs = require('fs'); 
var path = require('path'); 
var stream = s3.uploadStream('con1', 'test.jpg'); 
fs.createReadStream(path.join(__dirname, 'test.jpg')).pipe(stream); 

यह seems (लेकिन the comment देखें) कि संस्करण 2 में, आप के माध्यम से

var ds = loopback.createDataSource({ 
    connector: require('loopback-storage-service'), 
    provider: 'amazon', 
    key: '...', 
    keyId: '...' 
}); 
var Container = ds.createModel('container'); 
बजाय

भंडारण सेवा मिलता है। फिर, Container.uploadStream(...) पर कॉल करें।

+1

ऐसा लगता है कि संस्करण 2 को अभी भी उपरोक्त पाइप विधि का उपयोग करने की आवश्यकता है, क्योंकि अपलोडस्ट्रीम को अपलोड करने के लिए स्ट्रीम मिलती है और यह अजीब बात है कि इस पर कार्य करने के लिए कोई कॉलबैक विधि नहीं है (node_modules/loopback-घटक-storage/lib/storage- service.js) भले ही आधिकारिक दस्तावेज़ में यह कॉलबैक के बारे में उल्लेख करता है .. https://apidocs.strongloop.com/loopback-component-storage/#storageservice-prototype-uploadstream – nivincp

संबंधित मुद्दे