如何让网页记住上次打开的文件目录?
How to make web page remember last open file directory?
我有一个基于 Qt WebEngineView(在 QML 中)的 Windows 应用程序。我的应用程序中有网页。某些网页需要用户使用 select 个文件:
<input type="file" />
我想知道,我的应用程序是否可以记住上次目录用户 selected 文件?
我试过:
- 在我的网页中将值 属性 设置为
<input>
,但浏览器不允许以编程方式设置它,请参阅 Set default value for a input file form。
- 在Chrome打开我的网页,Chrome可以记住上一个目录。但是在我的应用中,每次打开安装应用的目录。
- 在原生的打开文件对话框中,我可以设置一个初始目录,但是我可以为网页中的打开文件对话框做同样的事情吗?
我知道这可能是不可能的。感谢任何建议和解决方法。
当 Web 内容请求文件对话框时,WebEngineView
元素有一个 signal。
FileDialog
元素有一个 property 用于设置(和获取)文件夹。
所以按照这些思路应该可以工作
FileDialog {
id: dialog
property var request
onRejected: request.dialogReject()
onAccepted: {
yourSavedFolder = folder;
request.dialogAccept(files);
}
}
WebEngineView {
onFileDialogRequested: {
request.accepted = true; // inhibit default dialog
dialog.request = request;
dialog.folder = yourSavedFolder;
dialog.open()
}
}
这只是粗略的描述,你还需要处理请求对象的打开方式等
我有一个基于 Qt WebEngineView(在 QML 中)的 Windows 应用程序。我的应用程序中有网页。某些网页需要用户使用 select 个文件:
<input type="file" />
我想知道,我的应用程序是否可以记住上次目录用户 selected 文件?
我试过:
- 在我的网页中将值 属性 设置为
<input>
,但浏览器不允许以编程方式设置它,请参阅 Set default value for a input file form。 - 在Chrome打开我的网页,Chrome可以记住上一个目录。但是在我的应用中,每次打开安装应用的目录。
- 在原生的打开文件对话框中,我可以设置一个初始目录,但是我可以为网页中的打开文件对话框做同样的事情吗?
我知道这可能是不可能的。感谢任何建议和解决方法。
当 Web 内容请求文件对话框时,WebEngineView
元素有一个 signal。
FileDialog
元素有一个 property 用于设置(和获取)文件夹。
所以按照这些思路应该可以工作
FileDialog {
id: dialog
property var request
onRejected: request.dialogReject()
onAccepted: {
yourSavedFolder = folder;
request.dialogAccept(files);
}
}
WebEngineView {
onFileDialogRequested: {
request.accepted = true; // inhibit default dialog
dialog.request = request;
dialog.folder = yourSavedFolder;
dialog.open()
}
}
这只是粗略的描述,你还需要处理请求对象的打开方式等