首页 > 解决方案 > 如何从相机捕获图像并将图像转换为 base 64 字符串以 xamarin 形式发送到服务器?

问题描述

我是 xamarin 形式的新手。我实现了一个简单的程序,其中从相机捕获图像并将其转换为 base64 字符串并将其发送到服务器,如下所示。

private async void AddNewPhoto(object sender, EventArgs e)
{
    MemoryStream memoryStream = new MemoryStream();
    img.Source = ImageSource.FromStream(() =>
    {
        var stream = file.GetStream();

        file.GetStream().CopyTo(memoryStream);

        return stream;
    });

    paths.Enqueue(filePath);

    imgPaths.Add(file);

    val.Add(img.Source);

    // Set StackLayout in XAML to the class field
    parent = headerStack1;

    parent.Children.Add(img);
}

async void btnSubmitClicked(object sender, EventArgs args)
{
    if (paths.Count > 0)
    {
        string URL1 = "";

        string basicDomain1 = AppConstant.ComplaintsUploadImageURL + PhoneNo + "~secretcode-" + 
        secretCode;

        MultipartFormDataContent form1 = new MultipartFormDataContent();
 
        DependencyService.Get<IHudService>().ShowHud("Loading");
        List<string> pathItems = new List<string>();

        for each (MediaFile ph in imgPaths)
        {
            var fileName = filePath.Split('\\').LastOrDefault().Split('/').LastOrDefault();

            var file = ph;

            var upfilebytes = File.ReadAllBytes(file.Path);

            var base64 = Convert.ToBase64String(upfilebytes);

            var content = new StringContent(base64);

            form1.Add(content, "image_64string");

            Dictionary<string, string> UploadJson = new Dictionary<string, string>();

            UploadJson.Add("image_txt", imgText);

            form1.Add(new StringContent(UploadJson["image_txt"]), "image_txt");       
                             
            form1.Add(new StringContent("jpg"), "image_extension");

            var response_ = await this.apiService.PostImageRequest(form1, URL1, basicDomain1);
            if (!response_.IsSuccess)
            {

                await Application.Current.MainPage.DisplayAlert("Error", response_.Message, "Network Problem!!");
                return;
            }
        }
    }
}

但它显示错误“无法访问关闭的流”。如何修复此错误?

标签: xamarin.formscross-platform

解决方案


推荐阅读