gpt4 book ai didi

c# - 检测 OpenFileDialog 何时返回下载的 URL/URI

转载 作者:行者123 更新时间:2023-11-30 12:42:53 25 4
gpt4 key购买 nike

我正在使用 OpenFileDialog(.Net Framework 4、Windows 10),我注意到它将允许用户指定一个 URL 作为文件名(例如,http://somewebsite/picture.jpg)。这对我的应用程序非常有用,所以我不打算禁用它。它的工作方式是将文件下载到用户的临时目录中,并在对话框的文件名属性中返回临时文件名。这很好,除了用户开始在他/她的临时目录中建立垃圾这一事实。

我想告诉 OpenFileDialog 类何时下载文件(而不是以前存在的文件),以便我可以通过在使用后删除文件来清理。我可以检查文件的目录是否是临时目录,但这不是很好,因为用户可能已经下载了他/她自己的文件。

我已经尝试拦截 FileOK 事件并检查 Filename 属性以查看它是否是 HTTP/FTP URI,但不管文档怎么说(“当用户通过单击打开按钮选择文件名时发生OpenFileDialog") 它在文件下载后 被触发,所以我无法访问 URL:Filename 属性已经有了临时文件名。

编辑:这是我喜欢做的一个例子:

Dim dlgOpenFile As New System.Windows.Forms.OpenFileDialog

If dlgOpenFile.ShowDialog(Me) <> Windows.Forms.DialogResult.OK Then Return

''//do some stuff with dlgOpenFile.Filename

If dlgOpenFile.WasAWebResource Then
Dim finfo = New IO.FileInfo(dlgOpenFile.Filename)
finfo.Delete()
End If

在这个例子中,我设想了 dlgOpenFile“WasAWebResource”的一个属性,它会告诉我文件是下载的还是最初是本地的。如果是第一种情况,我会删除它。

最佳答案

没有明显的方法可以做到这一点,但作为一种变通方法,检查文件所在的位置如何?看起来默认情况下此对话框会将文件下载到用户的 Temporary Internet Files 目录,因此您可以引入一些如下所示的代码:

FileDialog dialog = new OpenFileDialog();
if (dialog.ShowDialog() == DialogResult.OK)
{

string temporaryInternetFilesDir = Environment.GetFolderPath(System.Environment.SpecialFolder.InternetCache);
if (!string.IsNullOrEmpty(temporaryInternetFilesDir) &&
dialog.FileName.StartsWith(temporaryInternetFilesDir, StringComparison.InvariantCultureIgnoreCase))
{
// the file is in the Temporary Internet Files directory, very good chance it has been downloaded...
}
}

关于c# - 检测 OpenFileDialog 何时返回下载的 URL/URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32556683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com