2017-01-14 3 views

ответ

0

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

Вы должны сделать свой «Загрузить» где-то около 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 и загрузить его в следующий раз из своего безопасного места в пользовательской файловой системе.

Надежда Я получаю вашу проблему, и это поможет вам :)

- Edit -

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

вам нужен функции для создания 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"); 
} 

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

+0

Уверен, что это то же самое, что хранить копию изображения (Мое последнее предположение). Для этого, хотя вам нужно сохранить изображение в формате, который понимает SQL, я рекомендую Base64, так как я его много использую, и это действительно полезно. См. Редактирование для получения более подробной информации. – Emad

Смежные вопросы