gpt4 book ai didi

wpf - WPF 中的文件 uploader

转载 作者:行者123 更新时间:2023-12-04 23:34:36 24 4
gpt4 key购买 nike

我试图在 WPF 4.0 中创建一个自定义文件上传控件,但我卡在了一点上。
浏览文件后,我无法将文件保存在我的解决方案文件夹中。下面是我用于浏览的代码

private void btnBrowse_Click(object sender, RoutedEventArgs e)
{
// Create OpenFileDialog

Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
dlg.Filter = "Images (*.JPG;*.JPEG;*.PNG)|*.JPG;*.JPEG;*.PNG";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
string filename = dlg.FileName;
FileNameTextBox.Text = filename;
}
}

private void btnUpload_Click(object sender, RoutedEventArgs e)
{

string filename = FileNameTextBox.Text;
// Now I want save this file to my image folder.
}

现在我想将文件保存在我的解决方案探索中的图像文件夹中。对于 ASP.NET,我们使用 Server.Mappath 将指定的相对或虚拟路径映射到服务器上相应的物理目录。但我不确定我们可以在 WPF 中使用什么来实现同样的事情。我是 WPF 的新手,所以请帮助我。

最佳答案

如果您谈论的是 WPF 而不是 Silverlight,那么了解 WPF 和 ASP.NET 之间的区别很重要。 ASP.NET 是 HTTP 协议(protocol)的托管平台。 ASP.NET 站点中的路径不一定直接表示在磁盘上,因此 Server.MapPath 提供了一种将 ASP.NET 路径映射到物理路径的方法。

另一方面,WPF 是一个简单明了的 UI 框架。它不是像 ASP.NET 这样的宿主环境,因此映射路径的概念在 WPF 的上下文中是无关紧要的。根据您提供的代码,您不是在“上传”一个文件,您只是打开一个文件。在 WPF 中,您的应用程序逻辑直接在用户系统上运行,因此您可以通过 System.IO 命名空间访问文件系统。您可以使用 FileStream 创建一个新文件类并将字节从源手动复制到新文件,或者使用 File 简单地复制“打开的”文件类(class)。您的 WPF UI 提供了一个进入普通“桌面”应用程序的窗口,因此在您打开或保存文件时不需要(而且很可能不会)发生上传文件。

请记住,由于您的应用程序是桌面应用程序,因此您将受到运行您的应用程序的用户权限集的限制。如果运行您的应用程序的用户没有在磁盘上某处写入的权限,那么您在尝试写入时会遇到异常。如果他们无权从某处读取或删除文件,情况也是如此。确保您执行的任何文件事件都是在用户拥有权限的文件系统区域中完成的,例如他们的文档文件夹。

public void btnUpload_Click(object sender, RoutedEventArgs e)
{
string filename = FileNameTextBox.Text;
if (File.Exists(filename))
{
// TODO: Show an error message box to user indicating destination file already uploaded
return;
}

string name = Path.GetFileName(filename);
string destinationFilename = Path.Combine("C:\\temp\\uploaded files\\", name);

File.Copy(filename, destinationFilename);

// TODO: Show information or message box indicating file has copied
}

关于wpf - WPF 中的文件 uploader ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3359106/

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