Xamrin android form upload images to sql server using FilePicker.

umesh maurya 1 Reputation point
2022-02-10T10:02:12.66+00:00

I have used FilePicker to pick the image file and now I have to store my file into a database...but I don't know how to implement that, I watched videos in which they used OpenFileDialog.but it does not support in xamarin with C#.

The part which I have commented on are not working I have tried it ...please help

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Essentials;
using Xamarin.Forms;
using System.Data.SqlClient;
using Xamarin.Forms.Xaml;
using System.Data;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing;

namespace AntiCrime.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class Missing : ContentPage
{
SqlConnection sqlConnection;

    public Missing()
    {
        InitializeComponent();
        MainPage main = new MainPage();
        string sqlconn = main.Sqlconn;
        sqlConnection = new SqlConnection(sqlconn);
    }
    //string fileName;
    //string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);

    private async void Button_Clicked(object sender, EventArgs e)
    {
        //OpenFileDialog openFileDialog = new OpenFileDialog();
        var pickImage = await FilePicker.PickAsync(new PickOptions()
        {
            FileTypes = FilePickerFileType.Images,
            PickerTitle = "Pick an Image"

        });
        if (pickImage != null)
        {
            var stream = await pickImage.OpenReadAsync();
            ImgFile.Source = ImageSource.FromStream(() => stream);
            //fileName.Text = pickImage.FileName;
            //string imgfile = Path.GetFileName(pickImage.FullPath);
            string fileName = pickImage.FileName;
            //string folderPath = Server.MapPath("~/Images");

        }
    }


    //public void StoreImage(string filename)
    //{
    //    if (File.Exists(filename))
    //    {
    //        Count++;
    //        string filenames = "image" + Count.ToString() + ".jpg";
    //        filename = Path.Combine(folderPath, filenames);
    //    }
    //    else
    //    {
    //        filename = Path.Combine(folderPath, "image.jpg");
    //    }
    //    var img = UIImage.FromFile(filename);
    //    NSData image = img.AsJPEG();
    //    NSError err = null;
    //    image.Save(fileName, false, out err);
    //    lblPath.Text = "File Path:" + fileName;
    //    imgProfile.Image = UIImage.FromFile(fileName);
    //}

    private async void Button_Clicked_1(object sender, EventArgs e)
    {
        try
        {
            string gender = string.Empty;
            if (rbMale.IsChecked)
            {
                gender = "M";
            }
            else
            {
                gender = "F";
            }

            sqlConnection.Open();
            using (SqlCommand command = new SqlCommand("INSERT INTO dbo.MissReg VALUES( @Name, @Age, @Gender, @Last_Seen, @Details, @Image)", sqlConnection))
            {
                command.Parameters.Add(new SqlParameter("Name", txtName.Text));
                command.Parameters.Add(new SqlParameter("Age", txtAge.Text));
                command.Parameters.Add(new SqlParameter("Gender", gender));
                command.Parameters.Add(new SqlParameter("Last_Seen", txtLastSeen.Text));
                command.Parameters.Add(new SqlParameter("Details", txtDetails.Text));
                command.Parameters.Add(new SqlParameter("Image", ImgFile));
                command.ExecuteNonQuery();
            }
            sqlConnection.Close();
            var result = await this.DisplayAlert("congratulations", "user registration successfull", "yes", "cancel");
        }
        catch (Exception ex)
        {
            await App.Current.MainPage.DisplayAlert("Alert", ex.Message, "Ok");
            throw;
        }
        finally
        {
            sqlConnection.Close();
        }
    }




}

}

Developer technologies .NET Xamarin
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.