2015-05-04 14 views
6

Có thể có các thẻ liên kết thông thường trỏ đến các tệp mở hộp thoại để lưu tệp không? Giống như một trình duyệt web.Lưu tệp từ thẻ neo bằng cách sử dụng Electron

Ví dụ:

<a download href="documents/somefile.pdf">Download</a> 

Và có mà neo-tag kích hoạt một Lưu tập tin hộp thoại trên nhấp chuột?

Tôi đã thử sử dụng file://absolute-path-to-the-dir/documents/somefile.pdf và muốn mở tệp trong ứng dụng thay vì tải xuống ứng dụng.

Cập nhật: Trong phiên bản sau của điện tử hơn tôi sử dụng khi tôi viết câu hỏi này, hành vi như tôi muốn, cửa sổ mở ra yêu cầu người dùng lưu tệp.

Tuy nhiên, trong trường hợp liên kết bên ngoài và muốn giữ cửa sổ điện tử chỉ cho liên kết nội bộ và mở cửa sổ bên ngoài trong lựa chọn hệ điều hành mặc định, câu trả lời của Joshua Smith có thể làm chính xác điều đó.

+0

Bất kỳ may mắn nào tìm được giải pháp cho điều này? Tôi đang tìm cách làm điều tương tự. – MobileSam

+0

@MobileSam Không có gì cho đến thời điểm này. Tôi đã từ bỏ việc thử ngay bây giờ. Sẽ cố gắng tìm lại câu trả lời khi tôi có thêm thời gian. –

+2

Sau một số nghiên cứu, tôi tìm thấy câu trả lời ở đây: https://discuss.atom.io/t/how-to-access-atom-shell-apis-within-angularjs-for-opening-a-file-save -dialog/14376/4 – MobileSam

Trả lời

2

Những gì tôi đang làm hai lần là.

mainWindow.webContents.on('new-window', function(event, url) { 
    event.preventDefault(); 
    console.log("Handing off to O/S: "+url); 
    shell.openExternal(url); 
}); 

Đó là để bất cứ khi nào một trang trong ứng dụng của tôi muốn mở một cửa sổ mới, điều đó sẽ xảy ra trong trình duyệt thực tế. Điều này cũng tốt cho việc mở các tệp PDF và như vậy.

Sau đó, tôi chỉ đảm bảo rằng mọi liên kết tải xuống đều sử dụng target = _blank hoặc window.open() và quá trình tải xuống sẽ xảy ra trong trình duyệt của người dùng.

+1

Đối với những người mới đến điện tử: vỏ là yêu cầu ("electron"). –

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