写一个Wpf上传文件
以下是一个简单的WPF上传文件示例代码:
XAML文件:
<Window x:Class="WpfUploadFile.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF Upload File" Height="350" Width="525">
<Grid>
<StackPanel Margin="10">
<Button Content="Choose File" Click="ChooseFile_Click" />
<TextBlock Text="{Binding SelectedFileName}" Margin="5" />
<Button Content="Upload" Click="Upload_Click" Margin="5" />
<TextBlock Text="{Binding UploadMessage}" Margin="5" />
</StackPanel>
</Grid>
</Window>
C#文件:
using System;
using System.IO;
using System.Net;
using System.Windows;
namespace WpfUploadFile
{
public partial class MainWindow : Window
{
private string _selectedFileName;
public string SelectedFileName
{
get { return _selectedFileName; }
set
{
_selectedFileName = value;
OnPropertyChanged("SelectedFileName");
}
}
private string _uploadMessage;
public string UploadMessage
{
get { return _uploadMessage; }
set
{
_uploadMessage = value;
OnPropertyChanged("UploadMessage");
}
}
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
private void ChooseFile_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
dlg.DefaultExt = ".txt";
dlg.Filter = "Text documents (.txt)|*.txt";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
SelectedFileName = dlg.FileName;
}
}
private void Upload_Click(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(SelectedFileName))
{
MessageBox.Show("Please select a file to upload.");
return;
}
try
{
WebClient client = new WebClient();
Uri uri = new Uri("http://localhost/uploadfile.php"); // 上传文件的服务器地址
client.UploadFileCompleted += new UploadFileCompletedEventHandler(UploadFileCompletedCallback);
client.UploadProgressChanged += new UploadProgressChangedEventHandler(UploadProgressCallback);
client.UploadFileAsync(uri, SelectedFileName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void UploadFileCompletedCallback(object sender, UploadFileCompletedEventArgs e)
{
if (e.Error == null)
{
UploadMessage = "File uploaded successfully.";
}
else
{
UploadMessage = "Error uploading file: " + e.Error.Message;
}
}
private void UploadProgressCallback(object sender, UploadProgressChangedEventArgs e)
{
UploadMessage = "Uploading file... " + e.ProgressPercentage + "%";
}
#region INotifyPropertyChanged Members
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}
这个示例包括选择文件、上传文件、上传进度和上传完成的消息。它使用WebClient类进行文件上传,并在上传完成时显示消息。要使示例工作,需要在本地计算机上运行一个PHP服务器,以便上传文件。您可以修改服务器地址以适应您的需要。
原文地址: http://www.cveoy.top/t/topic/3GA 著作权归作者所有。请勿转载和采集!