I want to post image I select from OpenFileDialog to Web API. Then i will read url.
Like :
>"https://localhost:1111/api/images/1.jpg"
Image:
- BitmapImage src = new BitmapImage();
- src.BeginInit();
- src.CacheOption = BitmapCacheOption.OnLoad;
- src.UriSource = new Uri(path);
- src.EndInit();
- productImage.Source = src;
Button_Click :
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- OpenFileDialog fileDialog = new OpenFileDialog();
- fileDialog.Multiselect = false;
- fileDialog.Filter = "Image files (*.jpg, *.jpeg, *.jpe, *.jfif, *.png) | *.jpg; *.jpeg; *.jpe; *.jfif; *.png";
-
- if(fileDialog.ShowDialog() == true){SendImage(new ImageDTO() { image =fileDialog.FileName });}}
SendImage():
- public bool SendImage(ImageDTO dto)
- {
- string url = "http://localhost:52185/api/StoreImage";
- var wc = new WebClient();
- wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
- var parameters = new NameValueCollection(){{ "image", dto.image }};
- var res = wc.UploadValues(url, "POST",parameters);
- return true;}
This line throws :
- var res = wc.UploadValues(url, "POST",parameters);
> System.Net.WebException: 'The remote server returned an error: (500)
> Internal Server Error.'
ImageDTO :
- public class ImageDTO
- {
- public string image;
- }
ImagesController.cs :
- public class ImagesController :ApiController
- {
- [HttpPost[Route("api/StoreImage")]
- public string StoreImage(ImageDTO request){
- var buffer = Convert.FromBase64String(request.image);
- HttpPostedFileBase objFile = (HttpPostedFileBase)new MemoryPostedFile(buffer);
-
- try{
- if (objFile != null && objFile.ContentLength > 0)
- {
- string path = "";objFile.SaveAs(path);
-
- }
- }
- catch(Exception ex)
- {
-
- }
- return "OK";}}
It is a WPF application. I have never used Asp.Net Web API. How can i do this?