2015-10-12 16 views
8

Tôi muốn tải tệp lên vùng lưu trữ bằng cách sử dụng Loopback storage service.Dịch vụ lưu trữ LoopBack, tải lên trực tiếp (không có đối tượng yêu cầu)

Nhưng .upload() method mong muốn một đối tượng yêu cầu. Nhưng điều gì sẽ xảy ra nếu tôi muốn tải lên tệp hiện tại không đến từ biểu mẫu đã gửi?

Tôi có cần giả mạo yêu cầu POST để làm cho trình xử lý tải lên có vui không? Có vẻ như phải có một cách tốt hơn.

+0

Không cố gắng, nhưng có phương pháp để lấy luồng http://apidocs.strongloop.com/loopback-component-storage/#storageservice-prototype-uploadstream. Điều này trả về luồng, bạn có thể sử dụng đường ống và chỉ cần tải lên tệp hiện có bằng luồng. –

Trả lời

3

@RohitArkani hinted, tệp app-cloud.js chứa ví dụ về tệp tải lên sử dụng 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 (nhưng xem the comment) mà trong phiên bản 2, bạn sẽ có được dịch vụ lưu trữ qua

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

để thay thế. Sau đó, gọi Container.uploadStream(...).

+1

Có vẻ như phiên bản 2 vẫn cần sử dụng phương pháp đường ống ở trên, khiến uploadStream chỉ tải luồng để tải lên và thật lạ khi không có phương thức gọi lại để thực hiện nó (node_modules/loopback-component-storage/lib/storage- service.js) mặc dù trong tài liệu chính thức, nó đề cập đến cuộc gọi lại .. https://apidocs.strongloop.com/loopback-component-storage/#storageservice-prototype-uploadstream – nivincp

Các vấn đề liên quan