2016-02-29 21 views
7

Tôi đang làm việc trên ứng dụng chạy lần đầu sẽ phải tải xuống tệp (hình ảnh jpg/png) qua API từ web và lưu trữ cục bộ để kết nối trực tuyến sẽ không cần thiết nữa (người dùng có thể chạy cập nhật khi trực tuyến và tải xuống dữ liệu mới hơn qua api nếu có bất kỳ bản cập nhật nào).Tải xuống và lưu trữ tệp bên trong ứng dụng điện tử

Tôi biết đó là cách rất hiếm thấy cách hoạt động của ứng dụng dành cho máy tính để bàn nhưng mục tiêu chính là đồng bộ hóa dữ liệu ứng dụng dành cho máy tính để bàn với ứng dụng web.

Cho đến giờ, tôi đã tìm thấy plugin npm request (link) để kiểm tra xem người dùng có được kết nối với Internet hay không.

Tôi không chắc là có thể tải xuống và lưu trữ tệp bên trong ứng dụng điện tử (vì vậy nó sẽ ẩn bên ngoài ứng dụng) không? Bạn có thể đề xuất các plugin/công cụ cần thiết để đạt được mục tiêu đó không?

Mọi trợ giúp sẽ được đánh giá cao.

+0

Những loại dữ liệu bạn đang tải về? Tôi sẽ nói rằng nó khá bất thường đối với các ứng dụng để làm điều đó theo cách bạn mô tả. Tôi khuyên bạn nên lưu tất cả dữ liệu đã tải xuống vào thư mục chính của người dùng (ví dụ:/home/myuser/myapp trong Linux). –

+0

Tôi đã cập nhật câu hỏi. Lý do tải xuống dữ liệu là dữ liệu tự động thay đổi thông qua ứng dụng web xử lý tất cả dữ liệu sau đó được phân phối cho các ứng dụng web và thiết bị di động khác. Bây giờ khách hàng cũng muốn phiên bản máy tính để bàn của nó. – mrmnmly

Trả lời

6

Vâng, bạn có thể sử dụng đoạn mã từ this answer và thực hiện theo cách nút.

var http = require('http'); 
var fs = require('fs'); 
var app = require('remote').require('app') 

var file = fs.createWriteStream(app.getDataPath() + "externalFiles/file.jpg"); 
var request = http.get("http://url-to-api/some-image.jpg", function(response) { 
    response.pipe(file); 
}); 

Và bạn có thể sử dụng App Data Path để lưu trữ tệp. Tất nhiên, bạn sẽ phải phân tích cú pháp tên của tập tin từ URL, và sau đó bạn đã sẵn sàng để đi.

Bạn cũng có thể sử dụng nội dung web

https://github.com/atom/electron/blob/master/docs/api/web-contents.md

Sau đó, ứng dụng của bạn sẽ được làm việc như một trình duyệt, và ẩn hỗ trợ sẽ phải được bổ sung bằng cách sử dụng lưu trữ cục bộ hoặc một số kỹ thuật khác.

UPDATE:

Như ngày hôm nay có một vài gói có thể giúp với điều này như thế này một https://github.com/sindresorhus/electron-dl

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