Если вы говорите о WPF, а не о Silverlight, тогда важно понимать разницу между WPF и ASP.NET. ASP.NET - это хостинговая платформа для протокола HTTP. Пути на сайте ASP.NET не обязательно представлены непосредственно на диске, поэтому Server.MapPath позволяет сопоставить путь ASP.NET с физическим путем.
WPF, с другой стороны, является простым и просто структурой пользовательского интерфейса. Это не такая хостинговая среда, как ASP.NET, поэтому концепция сопоставления путей не имеет значения в контексте WPF. Исходя из предоставленного вами кода, вы не " загружаете " файл, вы просто открываете файл. В WPF логика ваших приложений работает непосредственно в пользовательской системе, и поэтому у вас есть доступ к файловой системе через пространство имен System.IO. Вы можете создать новый файл, используя класс FileStream , и скопировать байты из источника в новый файл вручную или просто скопировать «открытый» файл, используя класс File . Ваш пользовательский интерфейс WPF предоставляет окно в обычное «настольное» приложение, поэтому при открытии или сохранении файла загрузка файлов не должна (и, скорее всего, не будет).
Имейте в виду, что поскольку ваше приложение является настольным приложением, вы будете ограничены набором разрешений пользователя, запускающего ваше приложение. Если пользователь, запускающий ваше приложение, не имеет разрешения на запись где-то на диск, то при попытке записи вы столкнетесь с исключениями. То же самое происходит, если у них нет разрешения на чтение или удаление файлов откуда-либо. Убедитесь, что все выполняемые вами действия с файлами выполняются в тех областях файловой системы, на которые у пользователя есть разрешение, например в папке с документами.
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
}