没有完整路径的多个文件上传

Multiple file upload without full path

我正在尝试上传多个文件并只获取它们的文件名。 当我尝试这样做时,它只会上传一个文件。

所以它上传了带有完整路径的文件(并且有效)。

private void bChooseFolder_Click(object sender, EventArgs e)
{
    CoreClass.OPENDIALOG.Multiselect = true;
    string oldFilter = CoreClass.OPENDIALOG.Filter;
    CoreClass.OPENDIALOG.Filter = "(*.csv) | *.csv";

    if (CoreClass.OPENDIALOG.ShowDialog() == DialogResult.OK)
        tbFolderPath.Text = string.Join(FileSeperator, CoreClass.OPENDIALOG.FileNames);// <-- this works, but here I get the full path

    CoreClass.OPENDIALOG.Filter = oldFilter;
    CoreClass.OPENDIALOG.Multiselect = false;
}

所以我只得到了文件名,但它只上传了一个文件:

private void bChooseFolder_Click(object sender, EventArgs e)
{
    CoreClass.OPENDIALOG.Multiselect = true;
    string oldFilter = CoreClass.OPENDIALOG.Filter;
    CoreClass.OPENDIALOG.Filter = "(*.csv) | *.csv";

    if (CoreClass.OPENDIALOG.ShowDialog() == DialogResult.OK)
        tbFolderPath.Text = string.Join(FileSeperator, System.IO.Path.GetFileNameWithoutExtension(CoreClass.OPENDIALOG.FileName)); // <-- Doesn't work. Just one File.

    CoreClass.OPENDIALOG.Filter = oldFilter;
    CoreClass.OPENDIALOG.Multiselect = false;
}

好的,如果您正在开发 WinForms 应用程序,那么您正在使用包含 2 个属性的 OpenFileDialog

  • FileName 获取或设置包含在文件对话框中选择的文件名的字符串。
  • FileNames获取对话框中所有选中文件的文件名。

那么第一个永远不会包含很少的文件,你应该只在 Multiselect = false; 模式下使用它。

如果您需要在一个文本框中显示所有文件名,那么您可以使用 String.Join 方法和 LINQ 来枚举集合并获取每个元素的不带扩展名的文件名:

if (CoreClass.OPENDIALOG.ShowDialog() == DialogResult.OK)
    tbFolderPath.Text = string.Join(FileSeperator, CoreClass.OPENDIALOG.FileNames.Select(x => System.IO.Path.GetFileNameWithoutExtension(x)).ToArray()); // <-- Doesn't work. Just one File.