2015-10-12 11 views
8

Chcę przesłać plik do pojemnika magazynowego za pomocą Loopback storage service.LoopBack Storage Service, prześlij bezpośrednio (bez obiektu żądania)

Ale obiekt .upload() method oczekuje obiektu żądania. Ale co jeśli chcę przesłać istniejący plik, który nie pochodzi z przesłanego formularza?

Czy muszę złożyć fałszywe żądanie POST, aby program obsługi przesyłania był szczęśliwy? Wygląda na to, że musi być lepszy sposób.

+0

Nie testowano, ale istnieje metoda pobierania strumienia http://apidocs.strongloop.com/loopback-component-storage/#storageservice-prototype-uploadstream. Zwraca strumień, możesz użyć potoku i po prostu przesłać istniejący plik przy użyciu strumienia. –

Odpowiedz

3

Jako @RohitArkani hinted plik app-cloud.js zawiera przykład przesyłania pliku w wersji 1, który używa 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); 

To seems (ale patrz the comment), które w wersji 2, dostajesz usługę magazynowania poprzez

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

zamiast. Następnie zadzwoń pod numer Container.uploadStream(...).

+1

Wygląda na to, że wersja 2 nadal musi korzystać z powyższej metody, ponieważ uploadStream właśnie pobiera strumień do przesłania i dziwne jest, że nie ma tam żadnej metody wywołania zwrotnego (node_modules/loopback-component-storage/lib/storage- service.js), chociaż w oficjalnym dokumencie wspomina o wywołaniu zwrotnym .. https://apidocs.strongloop.com/loopback-component-storage/#storageservice-prototype-uploadstream – nivincp

Powiązane problemy