以下是一个简单的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服务器,以便上传文件。您可以修改服务器地址以适应您的需要。

写一个Wpf上传文件

原文地址: http://www.cveoy.top/t/topic/3GA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录