2015-10-12 8 views
8

Loopback storage serviceを使用してファイルをストレージコンテナにアップロードしたいとします。LoopBack Storage Service(リクエストオブジェクトなし)

しかし、.upload() methodにはリクエストオブジェクトが必要です。しかし、提出されたフォームから来ていない既存のファイルをアップロードしたいのですが?

アップロードハンドラを幸せにするためにPOSTリクエストを偽装する必要がありますか?より良い方法が必要であるように思えます。

+0

試してみませんが、ストリームhttp://apidocs.strongloop.com/loopback-component-storage/#storageservice-prototype-uploadstreamを取得する方法があります。これはストリームを返します。パイプを使用してストリームを使用して既存のファイルを単純にアップロードすることができます。 –

答えて

3

@RohitArkani hintedとして、app-cloud.jsファイルには、storageService.uploadStream(container, file, [options], Callback)を使用するファイルアップロードのバージョン1の例が含まれています。

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では上記のパイプメソッドを使用する必要があるようです。uploadStreamはアップロード用のストリームを取得するだけで、それを処理するコールバックメソッドがないことは奇妙です(node_modules/loopback-component-storage/lib/storage- service.js)でも、公式の文書ではコールバックについて言及しています.. https://apidocs.strongloop.com/loopback-component-storage/#storageservice-prototype-uploadstream – nivincp

関連する問題