簡體   English   中英

如何獲取用戶插入的下載文件名?

[英]How to get downloaded file name inserted by the user?

在我的 JavaScript 中,我使用帶有下載屬性的<a>標記讓用戶下載生成的文件。 我可以為該文件設置一個默認名稱,但是用戶可能會在將其保存到他們的系統之前更改它。 有沒有辦法可以獲取用戶在保存對話框中寫的名稱?

這樣做的主要原因是當用戶再次下載文件時,我可以再次使用與默認相同的名稱。

這是代碼:

var json = JSON.stringify(currentProject, null, '\t');

var a = document.createElement('a');
a.href = URL.createObjectURL(new Blob([json], {type: 'text/json'}));
a.download = currentProjectName;

a.click();

如果無法使用<a>標記方法執行此操作,我想知道以某種方式允許這樣做的其他下載方法。

我不認為沒有終端用戶的定制客戶端就可以做到這一點,保存對話框由OS控制,但是您可以向用戶提供他在應用程序中重命名文件的方式,例如: repl.it上的工作代碼

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>Download</title> </head> <body> <div> <input type="text" id="filename-input" value=""> <a id="download" href="generated-filename.txt" download>Download</a> </div> <script> document.addEventListener('DOMContentLoaded', loadDefaultFilename, false); function loadDefaultFilename() { // this could be value from database or cookie let userDefaultFilename = localStorage.getItem('default-filename') || 'generared-file.txt'; let filenameInput = document.getElementById('filename-input'); let fileDownloadLink = document.getElementById('download'); fileDownloadLink.setAttribute('href', userDefaultFilename) // load default filename from somewhere, eg database or cookie // set the default name filenameInput.value = userDefaultFilename; } let button = document.getElementById('download'); button.addEventListener('click', function(e) { const defaultFilename = document.getElementById('filename-input').value; saveDefaultFilename(defaultFilename); }); function saveDefaultFilename(filename) { localStorage.setItem('default-filename', filename); console.log(filename); } </script> </body> </html> 

我建議您創建一個輸入標記,用戶在其中輸入要下載的文件名,以便可以將其放入屬性download(並“記住”)中,否則我希望此鏈接對您有用:

如何設置從瀏覽器下載的文件名?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM