上传最近从Android / iOS(Crossplatform xamarin.forms)获取的图片与IIS上的MediaPlugin

时间:2017-08-30 07:50:29

标签: c# asp.net post xamarin.forms cross-platform

目前我一直在上传我在我自己的asp.net网络服务器上的应用程序中拍摄的图像。我使用了James Montemagno的Media.Plugin。拍摄图像效果很好。

问题:我在上传图片时收到了未处理的异常。

在我的解决方案中,我创建了一个在youtube tutorial中引用的新WebApplication!我做了几乎所有像他一样的事。

这是我的WebApplication Code:

public async Task<string> Post()
        {
            try
            {
                var httpRequest = HttpContext.Current.Request;
                if (httpRequest.Files.Count > 0)
                {
                    foreach (string file in httpRequest.Files)
                    {
                        var postedFile = httpRequest.Files[file];
                        var fileName = "test.png";
                            // postedFile.FileName.Split('\\').LastOrDefault().Split('/').LastOrDefault();
                        var filePath = HttpContext.Current.Server.MapPath("~/Uploads/" + fileName);
                        postedFile.SaveAs(filePath);
                        return null;
                    }
                }
            } catch (Exception exception)
            {
                return exception.Message;
            }
            return null;
        }

以下是拍摄图像并上传的代码:

 private async void listViewJson_ItemTapped(object sender, ItemTappedEventArgs e)
        {
            {
                await CrossMedia.Current.Initialize();

                if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
                {
                    await DisplayAlert("No Camera", ":( No camera available.", "OK");
                    return;
                }

                for (int i = 0; i < 2; i = i + 1)
                {
                    DateTime dt = DateTime.Now.AddHours(2);
                    var format = "MM/dd/yyyy_hh:mm:ss";
                    String curDateTime = dt.ToString(format);
                    var process_fullname = ((Process)(e.Item)).id.ToString() + "-" + curDateTime;

                    var _mediaFile = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
                    {
                        Directory = "Sample",
                        Name = $"{process_fullname}.jpg",
                        PhotoSize = PhotoSize.Small,
                        SaveToAlbum = true
                    });

                    if (_mediaFile == null)
                        return;

                    var image = new Image();
                    image.Source = ImageSource.FromStream(() =>
                    {
                        return _mediaFile.GetStream();
                    });

                    await DisplayAlert("ok", _mediaFile.AlbumPath, "ok");

                    try
                    {
                        var content = new MultipartFormDataContent();
                        content.Add(new StreamContent(_mediaFile.GetStream()), 
                            "\"file\"", 
                            $"\"{_mediaFile.AlbumPath}\"");
                        var httpClient = new HttpClient();
                        var uploadServiceBaseAddress = "http://localhost:53188/";
                        var httpResponseMessage = await httpClient.PostAsync(uploadServiceBaseAddress, content);
                        var remotePath = await httpResponseMessage.Content.ReadAsStringAsync();
                    }
                    catch (Exception exception)
                    {
                        throw exception;
                    }
                }
            };
        }

非常感谢任何帮助。

先谢谢,保罗

0 个答案:

没有答案