如何将图像从UWP发布到.NET Core Web API? [英] How can I post image from UWP to .NET core web api?

查看:79
本文介绍了如何将图像从UWP发布到.NET Core Web API?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

现在,我已经为使用HttpClient的Web api部分配置了UWP照片发布.

Now I have configured for UWP photo post to web api part which is using HttpClient.

Uri uri = new Uri("http://localhost:50040/api/Upload");
IInputStream inputStream = await photoFile.OpenAsync(FileAccessMode.Read);
HttpMultipartFormDataContent multipartContent = new HttpMultipartFormDataContent();
multipartContent.Add(new HttpStreamContent(inputStream), "myFile", photoFile.Name);
Windows.Web.Http.HttpClient newclient = new Windows.Web.Http.HttpClient();
Windows.Web.Http.HttpResponseMessage response = await client.PostAsync(uri, multipartContent);

但是我不知道如何为服务器端设置.NET核心Web API,以获取从UWP应用程序发布的图像.请帮助我,谢谢.

But I don't know how to set for the server side which is my .NET core web api to get the image which post from my UWP application.Please Help me, thank you.

推荐答案

在Web API控制器中

In Web API Controller

public IHostingEnvironment _environment;
public UploadFilesController(IHostingEnvironment environment) // Create Constructor 
{
    _environment = environment;
}

[HttpPost("UploadImages")]
public Task<ActionResult<string>> UploadImages([FromForm]List<IFormFile> allfiles)
{
    string filepath = "";
    foreach (var file in allfiles)
    {
        string extension = Path.GetExtension(file.FileName);
        var upload = Path.Combine(_environment.ContentRootPath, "ImageFolderName");
        if (!Directory.Exists(upload))
        {
            Directory.CreateDirectory(upload);
        }
        string FileName = Guid.NewGuid() + extension;
        if (file.Length > 0)
        {
            using (var fileStream = new FileStream(Path.Combine(upload, FileName), FileMode.Create))
            {
                file.CopyTo(fileStream);
            }
        }
        filepath = Path.Combine("ImageFolderName", FileName);
    }
    return Task.FromResult<ActionResult<string>>(filepath);
}

在yourpage.xaml.cs

In yourpage.xaml.cs

using Windows.Storage;
using Windows.Storage.Pickers;
.....
StorageFile file;
......

private async void btnFileUpload_Click(object sender, RoutedEventArgs e) // Like Browse button 
{
    try
    {
        FileOpenPicker openPicker = new FileOpenPicker();
        openPicker.ViewMode = PickerViewMode.Thumbnail;
        openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
        openPicker.FileTypeFilter.Add(".jpg");
        openPicker.FileTypeFilter.Add(".png");
        file = await openPicker.PickSingleFileAsync();
        if (file != null)
        {
            //fetch file details
        }
    }
    catch (Exception ex)
    {

    }
}

//When upload file
var http = new HttpClient();
var formContent = new HttpMultipartFormDataContent();
var fileContent = new HttpStreamContent(await file.OpenReadAsync());
formContent.Add(fileContent, "allfiles", file.Name);
var response = await http.PostAsync(new Uri("Give API Path" + "UploadImages", formContent);
string filepath = Convert.ToString(response.Content); //Give path in which file is uploaded

希望此代码可以帮助您...

Hope this code helps you...

但是请记住,formContent.Add(fileContent, "allfiles", file.Name);行很重要,而allfiles是在Web api方法"public Task<ActionResult<string>> UploadImages([FromForm]List<IFormFile> **allfiles**)"

But remember formContent.Add(fileContent, "allfiles", file.Name); line is important and allfiles is that name of parameter to fetch files in web api method "public Task<ActionResult<string>> UploadImages([FromForm]List<IFormFile> **allfiles**)"

谢谢!

这篇关于如何将图像从UWP发布到.NET Core Web API?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆