Сохранение файлов в приложении WPF. С#

Мне интересно, как хранить файлы, загруженные на страницу в настройках?

Например текстовые файлы

1 ответ

  1. Это потому, что вы не сохраняете изображение.
    Я немного смущен тем, что вы подразумеваете под загрузкой. Но я пытаюсь объяснить, что, по-моему, тебе поможет.

    Вы должны сделать свою «загрузку» где-то поблизости Save the image:

    if (op.ShowDialog() == true)
    {
        //Save the image
        image1.Source = new BitmapImage(new Uri(op.FileName));
        MessageBox.Show("File uploaded sucessfully");
    }
    

    Самое близкое, что приходит на ум при загрузке, это то, что вы хотите загрузить изображение на сервер. Для этого вам придется использовать веб-службу, которая получает данные изображения. На следующей странице обновить, хотя вам понадобится другой сервис, чтобы получить ранее загруженное изображение и показать его пользователю.

    Если вы хотите, чтобы ваше приложение хранило изображения пользователей в своей файловой системе (например, в приложении альбома), есть два режима.

    1-хранение файлов на своих местах и сохранение их URL в этом случае в Save the imageчасти вы храните op.FileNameи в следующей загрузке попробуйте загрузить изображение с этого адреса. Вы должны обработать файл, который, конечно, недоступен.

    2-сохраните копию изображения для безопасного использования при удалении исходного файла. Если это так, вы должны сохранить все изображение в Save the imageчасти и загрузить его в следующий раз из безопасного места внутри файловой системы пользователя.

    Надеюсь, я получу вашу проблему, и это поможет вам 🙂

    — Редактировать —

    Все правильно после уточнения в комментариях я могу подробнее:

    Вам нужны функции для создания Base64 с помощью изображений:

    public string FileToBase64(string Path)
    {
        byte[] imageArray = System.IO.File.ReadAllBytes(Path);
        return Convert.ToBase64String(imageArray);
    }
    

    И еще один для хранения строки в БД. Эта часть зависит от вашей структуры БД и технологии, но я уверен, что вы можете понять это:

    public void SaveTheImageToDb(string Data) { }
    

    И конвертер для назначения строк образам WPF:

    public class Base64ImageConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string s = value as string;
    
            if (s == null)
                return null;
    
            BitmapImage bi = new BitmapImage();
    
            bi.BeginInit();
            bi.StreamSource = new MemoryStream(System.Convert.FromBase64String(s));
            bi.EndInit();
    
            return bi;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    

    Затем в коде:

    if (op.ShowDialog() == true)
    {
        var imageData = FileToBase64(op.FileName);
        SaveTheImageToDb(imageData);
        image1.Source = new BitmapImage(new Uri(op.FileName));
        MessageBox.Show("File uploaded sucessfully");
    }
    

    И в следующей загрузке представления вы можете использовать привязку и конвертер, чтобы показать сохраненное изображение из БД.