c#-从OpenFileDialog处理多个选定的文件

我使用foreach循环读取多个图像文件,但是我只能流式传输第一个选定的文件.当我尝试保存多个不同的图像时,输出就像第一个选定图像的精确副本,而不是其余的图像.

    private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(DBHandler.GetConnectionString());
        try
        {
            OpenFileDialog fop = new OpenFileDialog();
            fop.Multiselect = true;

            fop.InitialDirectory = "C:\\";
            fop.Filter = "JPG,JPEG|*.jpg|PNG|*png";
            if (fop.ShowDialog() == DialogResult.OK)
            {

                foreach (String files in fop.FileNames)
                {
                    FileStream FS = new FileStream(@fop.FileName, FileMode.Open, FileAccess.Read);
                    byte[] img = new byte[FS.Length];
                    FS.Read(img, 0, Convert.ToInt32(FS.Length));

                    if (con.State == ConnectionState.Closed)
                        con.Open();
                    SqlCommand cmd = new SqlCommand("SaveImage", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("@img", SqlDbType.Image).Value = img;
                    cmd.ExecuteNonQuery();

                }

                MessageBox.Show("Image has been saved successfully!!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

我想以相同的形式查看所有图像.

我的期望:A-B-C-D(每个字母代表不同的检索图像.“ A”是对话框中第一个选择的文件)

实际输出:A-A-A-A.为什么会这样呢?

解决方法:

在循环中,您使用的是fop.FileName,它将返回第一个选定的文件:

This property can only be the name of one selected file. If you want to return an array containing the names of all selected files in a multiple-selection dialog box, use FileNames.

foreach (String files in fop.FileNames)
{
    FileStream FS = new FileStream(@fop.FileName, FileMode.Open, FileAccess.Read);

    // ...
}

改为使用迭代变量文件名进行更改:

foreach (String filename in fop.FileNames)
{
    FileStream FS = new FileStream(filename, FileMode.Open, FileAccess.Read);

    // ...
}

相关:OpenFileDialog reads only the first file.

上一篇:nginx配置ssl证书访问不了https网站


下一篇:如何在Xamarin for Android中压缩文件?