簡體   English   中英

如何將圖像保存在 ASP.NET Core MVC 中的文件夾中,該 MVC 來自 Xamarin.Forms ZE84ZDB60B939084CDB69

[英]How to save an image in a folder in ASP.NET Core MVC that comes from Xamarin.Forms Android?

我正在嘗試保存來自 Xamarin forms Android 的圖像,但方法Post沒有得到圖像,但圖像到達頁面。

Xamarin 代碼:

await CrossMedia.Current.Initialize();               

if (!CrossMedia.Current.IsPickPhotoSupported)
{
    await DisplayAlert("No pick photo", "no pick photo available", "OK");
}

_mediaFile = await CrossMedia.Current.PickPhotoAsync();

if (_mediaFile == null) 
    return;

lblStatus.Text = _mediaFile.Path;

var content = new MultipartFormDataContent();
content.Add(new StreamContent(_mediaFile.GetStream()), "\"file\"",
                $"\"{_mediaFile.Path}\"");

var httpClient = new HttpClient();
var uploadServiceBaseAddress = "http://url/api/Files/Upload";

var httpResponseMessage = await httpClient.PostAsync(uploadServiceBaseAddress, content);
lblStatus.Text = await httpResponseMessage.Content.ReadAsStringAsync();

ASP.NET 核心 MVC / C# 代碼:

[Route("api/Files/Upload")]
public async Task<string> Post(List<IFormFile> files)
{
        try
        {
            foreach (var formFile in files)
            {
                if (formFile.Length > 0)
                {
                    var fileName = formFile.FileName.Split('\\').LastOrDefault().Split('/').LastOrDefault();
                    var filePath = Path.Combine(Directory.GetCurrentDirectory(), "~/Uploads/", fileName);
                 
                    using (var stream = System.IO.File.Create(filePath))
                    {
                        await formFile.CopyToAsync(stream);
                    }

                    return "/Uploads/" + fileName;
                }
            }
        }
        catch (Exception exception)
        {
            return exception.Message;
        }

        return "no files";
}

在我的移動應用程序中返回“無文件”,因此圖像未保存在文件夾中。

有人知道這是為什么嗎?

非常感謝

我找到了解決方案。 我留下我的代碼以防它幫助某人。 我只需要更改這些行

[Route("api/Files/Upload")]
    public async Task<string> Post()
    {
        try
        {
            var fileName = this.Request.Form.Files[0].FileName.Split('\\').LastOrDefault().Split('/').LastOrDefault();
            var filePath = Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\Uploads\", fileName);

            using (var stream = System.IO.File.Create(filePath))
            {
                        await this.Request.Form.Files[0].CopyToAsync(stream);
            }
            return "/Uploads/" + fileName;

        }
        catch (Exception exception)
        {
            return exception.Message;
        }
        return "no files";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM